单击 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显示不同的颜色