JTextField 文本在焦点上清除并在移除光标时重新出现

JTextField text cleared on focus and reappears when cursor is removed

如何让 JTextField 中的文本在用户单击 JTextField 后自行删除?如果 JTextField 不包含任何字符,则当用户从 JTextField 中单击时,文本必须重新出现。另外,我应该把这段代码放在我的 JFrame 代码中的什么地方?

工作代码演示:您可以使用MouseAdapter and override MouseListener

当用户在 JtextField 中单击时,您想清除它。您需要添加 addMouseListener 并覆盖 mouseClicked。

import java.awt.FlowLayout;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.JFrame;
import javax.swing.JTextField;

public class ClearJtextField {

    public ClearJtextField() {

        JFrame frame = new JFrame();
        frame.setLayout(new FlowLayout(FlowLayout.CENTER, 120, 120));
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        JTextField tf = new JTextField("Type something and click");
        // adding MouseAdapter and overriding mouseClicked
        tf.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent e) {
                tf.setText("");
            }
        });

        frame.addMouseListener(new MouseAdapter() {

            public void mouseClicked(MouseEvent e) {
                if (tf.getText().length() == 0)
                    tf.setText("Type something and click");

            }

        });

        frame.add(tf);
        frame.pack();
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        new ClearJtextField();

    }

}

如果用户在 JTextField 外部单击时 JTextField 为空,以上代码将在单击时清除 JTextField 并再次将文本设置回 "Type something and click"。