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

时间:2018-02-22 10:03:12

标签: java jframe jtextfield

一旦用户点击JTextField,如何让JTextField中的文本自行删除?如果JTextField不包含任何字符,则当用户单击JTextField时,必须重新显示该文本。另外,我将这些代码放在我的JFrame代码中?

1 个答案:

答案 0 :(得分:-1)

工作代码演示:您可以使用MouseAdapter并覆盖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为空。