在 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 中禁用“粘贴”的主要内容,如果未能解决你的问题,请参考以下文章

区分 JTextField 中的键入和粘贴

使用任何过滤器在数据库中搜索

根据不同的id开头从数据库更改密码

实现JTextfield 的右键 复制剪切粘贴功能。

保持 jButton 灰色直到 jTextFields != null

JText::_ 不工作