如何在JTextField java中显示默认消息

Gus*_*sta 7 java swing jtextfield

我想创建一个带有消息的JTextField作为deafult.但不是作为正确的文本,而是作为对JTextField内部输入内容的评论.因此,如果我输入jtf.getText(),它将返回null或空,因为它只是在那里打印的注释.当你点击它然后它消失了,你可以写任何你想要的东西.有没有办法做这样的事情?

Cyr*_* Ka 10

一种可能的技术是首先将默认字符串设置为textField的文本:

JTextField myField = new JTextField("Default Text");
Run Code Online (Sandbox Code Playgroud)

然后使用a FocusListener,这样当用户将焦点放在元素中时,文本消失:

myField.addFocusListener(new FocusListener() {
    public void focusGained(FocusEvent e) {
        myField.setText("");
    }

    public void focusLost(FocusEvent e) {
        // nothing
    }
});
Run Code Online (Sandbox Code Playgroud)

但是你必须要小心:如果用户从未将焦点放在文本字段中,getText()将返回默认字符串.因此,您最好管理一个布尔值,告诉文本字段是否有焦点.


iTe*_*ech 5

我相信你想要的是input hint在文本字段中,如下图所示:

输入提示

检查可以执行此操作的xswingx库.

  • 这是SwingX库的一部分.@GustavoBaiocchiCosta没有工具包不属于标准库.最好下载最新版本的SwingX(恕我直言),并从内存中,简单地调用PromptSupport.setPromot("提示",文本字段).检查man部分中我的评论中的链接以获取示例 (2认同)