如何在用户单击JTextField时删除文本?

时间:2013-04-19 14:08:52

标签: java swing actionlistener jtextfield focuslistener

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

我想在用户再次点击JTextField时清除JTextField中的所有文字。我尝试通过向FocusListener添加ActionListenerJTextField来实现此目的,但我的尝试无效。此外,我对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();
    }
});

5 个答案:

答案 0 :(得分:4)

添加鼠标监听器:

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

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

答案 1 :(得分:3)

你可以这样做:

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

答案 2 :(得分:2)

只是对其他人的补充'码。

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//

希望它有所帮助,干杯!!!

答案 3 :(得分:1)

如果你只需要一个点击它就可以删除你可以这样做的文字:

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("");
    }

答案 4 :(得分:0)

为你添加1行buttonMethod例如:

txtfield.clear();

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