Mar*_*elo 8 java spell-checking javafx highlighting javafx-2
我们TextArea在我们的应用程序中使用JavaFX的控件,并尝试将其与Jazzy Spell Check API 集成- 例如,当用户输入不在字典中的错误单词时,这样的单词将被突出显示.
有没有办法在所述控件中突出显示一个单词?我在JavaDocs中看不到任何选项,所以如果有人可以建议一种方法吗?
我想,有可能使用HTMLEditor组件和颜色不同的单词<font face="red=>wrongWord</font>.然而,这会带来拼写检查的许多不同问题,例如html标签和单词计数.
jew*_*sea 11
JavaFX TextArea控件(从2.0.2开始)不支持混合文本样式(字体等)的富文本编辑.
您可以通过操作TextArea的selectRange来突出显示TextArea中连续的字符串,如下例所示:
public class TextHighlight extends Application {
public static void main(String[] args) { Application.launch(args); }
@Override public void start(Stage stage) {
final TextArea text = new TextArea("Here is some textz to highlight");
text.setStyle("-fx-highlight-fill: lightgray; -fx-highlight-text-fill: firebrick; -fx-font-size: 20px;");
text.setEditable(false);
text.addEventFilter(MouseEvent.ANY, new EventHandler<MouseEvent>() {
@Override public void handle(MouseEvent t) { t.consume(); }
});
stage.setScene(new Scene(text));
stage.show();
Platform.runLater(new Runnable() {
@Override public void run() { text.selectRange(13, 18); }
});
}
}
Run Code Online (Sandbox Code Playgroud)
您可以使用上面的代码作为基础,在进行拼写检查时将TextArea切换为只读模式.实施提示,依次查找并修复每个单词,直到拼写检查完成.在单独的对话框或面板中执行提示.Jazzy演示似乎以这种方式工作http://jazzy.sourceforge.net/demo.html,因此将其Swing UI转换为JavaFX应该相当容易.
或者,您可以使用JavaFX WebView控件来包装任何基于javascript/html的拼写检查器(例如http://www.javascriptspellcheck.com/),使用类似于此处演示的技术:http:// jewelsea. wordpress.com/2011/12/11/codemirror-based-code-editor-for-javafx/.
有可能......有点儿
我知道这个问题已经解决了,但我找到了解决问题的方法,并且认为我会将其发布给其他也偶然发现这篇文章的人.这有点hacky,但如果您需要在TextArea中突出显示文本并且不想接受令人不满意的"不可能"的答案,那么它可以在紧要关头工作.
矩形现在将与背景完美融合,但会更改文本的颜色.禁用矩形意味着它不会出现在用户的禁欲之外 - 例如,点击矩形等操作不会产生任何惊人的效果.
如果需要各种颜色,您可以稍微调整此方法.
如果人们感兴趣,持怀疑态度,或者如果工作变得棘手,我可以发布实施细节.
| 归档时间: |
|
| 查看次数: |
24361 次 |
| 最近记录: |