7

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

4

3 回答 3

10

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

JTextField myField = new JTextField("Default Text");

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

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

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

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

于 2013-02-16T23:42:30.380 回答
5

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

输入提示

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

于 2013-02-16T23:38:12.543 回答
2

将 textFieldInstance.setToolTip帮助:

textFieldInstance.setToolTip("Tool tip for text field");
于 2013-02-16T23:25:45.657 回答