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

如何在JTextField java中显示默认消息,java,swing,jtextfield,Java,Swing,Jtextfield,我想创建一个JTextField,其中包含一条消息作为deafolt。但不是作为一个适当的文本,而是作为关于在JTextField中键入内容的注释。 因此,如果我键入jtf.getText(),它将返回null或空,因为它只是一条打印在那里的注释。当你点击它,它就会消失,你可以在上面写任何你想写的东西。有什么方法可以做这样的事情吗?会有帮助: 我相信您想要的是在文本字段中输入提示,如下图所示: 检查可执行此操作的库。一种可能的技术是首先将默认字符串设置为文本字段的文本: JTextField

我想创建一个JTextField,其中包含一条消息作为deafolt。但不是作为一个适当的文本,而是作为关于在JTextField中键入内容的注释。 因此,如果我键入jtf.getText(),它将返回null或空,因为它只是一条打印在那里的注释。当你点击它,它就会消失,你可以在上面写任何你想写的东西。有什么方法可以做这样的事情吗?

会有帮助:


我相信您想要的是在文本字段中输入提示,如下图所示:


检查可执行此操作的库。

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

JTextField myField = new JTextField("Default Text");
然后使用
FocusListener
,这样当用户将焦点放在元素中时,文本就会消失:

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

    public void focusLost(FocusEvent e) {
        // nothing
    }
});

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

看看最新的SwingLabs,SwingX Libraries中的。在这个博客条目中可以找到由@trashgod链接的更高级、更华丽的文本提示版本。这正是我想要的:d thx,我会努力找到它,发现这有点难用。这个提示类不是java API的一部分?另外,我想与jtextfield一起使用,这是SwingX库的一部分@GustavoBaiocchiCosta无套件,不属于标准库。最好下载最新版本的SwingX(IMHO),从内存中只需调用PromptSupport.setPromot(“Prompt”,textfield)。查看我在man部分的评论中的链接,以获取一个示例,我已经成功地自己实现了这一点。谢谢大家的帮助。我用focus listener来了解有人何时在文本字段上按下按钮:这真的很有帮助。我设法解决了我的问题。非常感谢你!这基本上就是我最后要做的,但是在
focusLost
函数中,我检查了文本字段是否为空,如果为空,我将文本设置为默认值并重置
wascocused
布尔值。
myField.addFocusListener(new FocusListener() {
    public void focusGained(FocusEvent e) {
        myField.setText("");
    }

    public void focusLost(FocusEvent e) {
        // nothing
    }
});