【问题标题】:Highlight all text in TextField upon click JavaFX单击 JavaFX 突出显示 TextField 中的所有文本
【发布时间】:2017-10-14 13:07:45
【问题描述】:

我正在制作一个 JavaFX 应用程序,在启动时,TextField 的默认文本显示“请输入此值”,用户应该删除该文本并输入一个值。但是,每次单击、拖动和突出显示所有文本是相当痛苦的。 有没有办法做到这一点,当用户点击 TextField 时,它会自动突出显示所有文本以便于删除,但仅当文本等于默认消息时?我对此进行了研究并不能'找不到任何东西,任何帮助将不胜感激。

【问题讨论】:

  • 为什么不使用提示文本,而不是一些默认文本?
  • 哇,我很愚蠢,甚至没有意识到它的存在。谢谢??????

标签: java javafx textarea textfield


【解决方案1】:

要执行您明确要求的操作,您可以使用

textField.focusedProperty().addListener((obs, wasFocused, isNowFocused) -> {
    if (isNowFocused && DEFAULT_TEXT.equals(textField.getText())) {
        textField.selectAll();
    }
});

但无论如何最好使用promptText 来实现此功能:

textField.setPromptText(DEFAULT_TEXT);

【讨论】:

  • 太棒了,我真的很感激。我可以使用提示文本,但我最初更喜欢使用默认文本有两个原因:CSS 样式不会影响提示文本,如果我使用提示文本,那么第一个文本字段(有 2 个)是自动聚焦于隐藏文本的启动。再次感谢! :)
  • @JoshNarsu 您可以使用 -fx-prompt-text-fill 属性更改提示文本的颜色(尽管我不确定其他属性:您可以尝试独立设置文本字段聚焦时的样式和当它没有聚焦时)。您还可以通过一些 CSS 魔术绕过在文本字段集中(但为空)时隐藏的提示文本。
【解决方案2】:

这条线适合我

textField.setOnMouseClicked(e -> textField.selectAll());

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-10
    • 1970-01-01
    • 2015-03-14
    • 2020-08-26
    • 1970-01-01
    相关资源
    最近更新 更多