在 jTextfield 中禁用“粘贴”
Posted
技术标签:
【中文标题】在 jTextfield 中禁用“粘贴”【英文标题】:Disabling 'paste' in a jTextfield 【发布时间】:2010-09-23 22:04:00 【问题描述】:我有一个用 Swing 编写的应用程序,awt。 我想阻止用户将值粘贴到文本字段中。 有没有办法在不使用动作监听器的情况下做到这一点?
【问题讨论】:
【参考方案1】:您可以像这样使用 null 参数调用 setTransferHandler:
textComponent.setTransferHandler(null);
这将禁用该字段上的所有复制/粘贴操作。
【讨论】:
谢谢,在我的情况下,我需要启用图像文件或打印屏幕的粘贴功能。【参考方案2】:最好的方法是在组件 ActionMap 中移除与 CTRL+V 击键相关的动作。
【讨论】:
【参考方案3】:最简单的表达方式:textComponent.setEditable(false);
这将禁用剪切和粘贴,但仍启用复制。
【讨论】:
真实故事,我有一个文本组件,其中 isEditable() 返回 false,但 TransferAction 仍然允许您粘贴到其中。按 Ctrl-V 被禁用,但如果您在主菜单中有一个粘贴操作与相关组件的传输操作挂钩,人们仍然可以粘贴。 @Trejkaz hmm .. 很久以来就没有见过这样的不当行为(早期的摇摆版本有过),现在无法重现。 过去几个月可能已修复。【参考方案4】:public class PastlessJTextField extends JTextField
public PastlessJTextField()
super();
public PastlessJTextField( int columns )
super( columns );
@Override
public void paste()
// do nothing
【讨论】:
【参考方案5】:您可以覆盖JTextComponent
中的paste()
方法。
【讨论】:
以上是关于在 jTextfield 中禁用“粘贴”的主要内容,如果未能解决你的问题,请参考以下文章