1

在我的程序中,用户在 a 中写了一些东西,JTextField然后单击“生成”按钮,这会触发中的字符JTextField被绘制到 a JPanel

然后,我想JTextField在用户再次单击时清除所有文本JTextField。我试图通过在 中添加 aFocusListener和 anActionListener来实现这一点JTextField,但是我的尝试没有奏效。此外,我的实现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();
    }
});
4

5 回答 5

4

添加鼠标监听器:

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

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

于 2013-04-19T14:14:20.033 回答
3

你可以这样做:

textField.addMouseListener(new MouseAdapter() {
    @Override
    public void mouseClicked(MouseEvent e) {
        textField.setText("");
    }
});
于 2013-04-19T14:14:27.540 回答
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//

希望有帮助,加油!!!

于 2015-05-15T18:55:53.390 回答
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("");
    }
于 2013-04-19T14:17:24.143 回答
0

向您添加 1 行按钮方法,例如:

txtfield.clear();

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

于 2013-04-19T14:11:30.677 回答