【问题标题】:How to display a default message in JTextField java [duplicate]java - 如何在JTextField java中显示默认消息[重复]
【发布时间】:2013-02-01 16:48:28
【问题描述】:

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

【问题讨论】:

  • 看看最新的 SwingLabs、SwingX 库中的Prompt support
  • 另见TextPrompt
  • 可以在Text Prompt 博客条目中找到上面@trashgod 链接到的更高级和更精美的文本提示版本。

标签: java swing jtextfield


【解决方案1】:

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

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() 将返回默认字符串。因此,您最好管理一个布尔值来判断文本字段是否曾经获得过焦点。

【讨论】:

  • 这真的很有帮助。我设法解决了我的问题。非常感谢!
  • 这基本上是我最终做的,但是在focusLost 函数中,我检查了文本字段是否为空,如果是,我将文本设置为默认值并重置@ 987654325@布尔值。
【解决方案2】:

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

检查xswingx 库,它可以做到这一点。

【讨论】:

  • 这正是我想要的:D thx,我会尽力找到它
  • 发现这个有点难用。这个提示类不是java API的一部分吗?另外我想与 jtextfield 一起使用
  • 这现在是 SwingX 库的一部分。 @GustavoBaiocchiCosta 没有不属于标准库的套件。最好下载最新版本的 SwingX (恕我直言),并且,从内存中,它就像调用 PromptSupport.setPromot("Prompt", textfield) 一样简单。查看我在 man 部分的评论中的链接以获取示例
  • 我自己设法实现了这一点。感谢大家的帮助。我使用焦点侦听器来知道何时有人按下文本字段:D
【解决方案3】:

textFieldInstance.setToolTip帮忙:

textFieldInstance.setToolTip("Tool tip for text field");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-14
    • 1970-01-01
    • 2017-08-01
    • 1970-01-01
    • 2015-09-16
    • 2017-08-04
    • 1970-01-01
    • 2012-01-07
    相关资源
    最近更新 更多