单击 JavaFX 突出显示 TextField 中的所有文本

Posted

技术标签:

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

我正在制作一个 JavaFX 应用程序,在启动时,TextField 的默认文本显示“请输入此值”,用户应该删除该文本并输入一个值。但是,每次单击、拖动和突出显示所有文本是相当痛苦的。 有没有办法做到这一点,当用户点击 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());

【讨论】:

以上是关于单击 JavaFX 突出显示 TextField 中的所有文本的主要内容,如果未能解决你的问题,请参考以下文章

在 JavaFX 中为 TextField 设置 KeyPressed 事件

在JavaFX中为TextField设置KeyPressed事件

JavaFX TextArea和TextField显示不同的颜色

JavaFX TextArea & TextField 显示不同的颜色

在 JavaFX TextArea 中突出显示字符串

使用箭头键控制连接到 TextField 的 JavaFX ContextMenu