【问题标题】:Disabling 'paste' in a jTextfield在 jTextfield 中禁用“粘贴”
【发布时间】:2010-09-23 22:04:00
【问题描述】:

我有一个用 Swing 编写的应用程序,awt。 我想阻止用户将值粘贴到文本字段中。 有没有办法在不使用动作监听器的情况下做到这一点?

【问题讨论】:

    标签: java swing awt jtextfield


    【解决方案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() 方法。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-06-17
          • 2017-05-16
          • 2013-09-27
          • 2019-03-17
          • 2011-11-27
          相关资源
          最近更新 更多