【问题标题】:JTextField text cleared on focus and reappears when cursor is removed [duplicate]JTextField 文本在焦点上清除并在光标被移除时重新出现[重复]
【发布时间】:2018-08-02 03:11:36
【问题描述】:

当用户点击 JTextField 后,如何使 JTextField 中的文本自行删除?如果 JTextField 不包含任何字符,则当用户单击 JTextField 之外时,文本必须重新出现。另外,我应该将此代码放在我的 JFrame 代码中的什么位置?

【问题讨论】:

  • 添加您的方法

标签: java jframe jtextfield


【解决方案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,并再次将文本设置回“键入内容并单击”。

【讨论】:

  • 这没有回答问题。如果文本字段失去焦点并且为空,则您的代码不会恢复文本。
  • @SurfMan 我已经更新了代码,请检查一下。
  • 这是一团糟。框架上的 MouseListener?去the duplicate question查看答案,看看合适的解决方案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-31
  • 2022-10-01
  • 2014-11-29
  • 2011-08-16
  • 1970-01-01
  • 2018-04-05
相关资源
最近更新 更多