【问题标题】:How to delete text when a user clicks a JTextField?用户单击 JTextField 时如何删除文本?
【发布时间】:2013-04-12 23:08:13
【问题描述】:

在我的程序中,用户在JTextField 中写入内容,然后单击“生成”按钮,这会触发JTextField 中的字符被绘制到JPanel

然后,当用户再次单击JTextField 时,我想清除JTextField 中的所有文本。我试图通过在JTextField 中添加FocusListenerActionListener 来实现这一点,但是我的尝试没有奏效。此外,我对FocusListener 的实现给出了Unreachable Statement 编译器错误。

这可以在 Java 中实现吗?如果可以,我该怎么做?

下面的代码是我的ActionListener 实现。

dfaText = new JTextField(6);
dfaText.addActionListener(new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent e) {
        generateLabel.setText("NOOOOO!!!");
        dfaText.setText("");

        isDfaDrawn = false;
        canDraw = false;
        repaint();
    }
});

【问题讨论】:

  • 能否贴出相关部分的代码?
  • “当用户点击它”点击什么?按钮???
  • 不,当用户单击文本字段时。
  • 当用户TABS到文本字段时会怎样?不要假设用户使用鼠标。应该使用 FocusListener 而不是 MouseListener。
  • 当我使用 FocusListener 时,它会为 generateLabel、dfaText、isDrawn... 等提供无法访问的语句(例如)。您对此有什么想法吗?

标签: java swing actionlistener jtextfield focuslistener


【解决方案1】:

为你添加 1 行按钮方法例如:

txtfield.clear();

或将您的 txtfield 设置为空字符串

【讨论】:

    【解决方案2】:

    添加鼠标监听器:

    field.addMouseListener(new MouseAdapter() {
      @Override
      public void mouseClicked(MouseEvent e) {
        field.setText("");
      }
    });
    

    请记住,如果用户合法地点击其他地方并返回该字段,这可能会令人沮丧。您可能希望保持某种状态,例如仅当在此期间单击了按钮时才清除该字段。

    【讨论】:

      【解决方案3】:

      你可以这样做:

      textField.addMouseListener(new MouseAdapter() {
          @Override
          public void mouseClicked(MouseEvent e) {
              textField.setText("");
          }
      });
      

      【讨论】:

        【解决方案4】:

        如果你想要它只需单击它以删除文本,你可以这样做:

        textField.addMouseListener(new java.awt.event.MouseAdapter() {
                    public void mousePressed(java.awt.event.MouseEvent evt) {
                        textFieldMousePressed(evt);
                    }
                });
         private void textFieldMousePressed(java.awt.event.MouseEvent evt) {
                  textField.setText("");
            }
        

        【讨论】:

          【解决方案5】:

          只是对他人代码的补充。

          public void textfieldMouseClicked(java.awt.event.MouseEvent evt) {                                      
              uname_tf.setText(null);
          } //This will set the JTextfield blank on mouse click//      
          
          public void textfieldFocusLost(java.awt.event.FocusEvent evt) {                                   
              uname_tf.setText("Username");
          } //This will bring back the default text when not in focus//
          

          希望对你有帮助,干杯!!!

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-10-15
            相关资源
            最近更新 更多