我正在制作一个带语法高亮的文本编辑器。当前可编辑文本被实现为HBoxes列表,其中包含每个包含单个单词的Text实例列表。这样我就可以改变每个单词的风格。
显然,这是错误的方法,因为当文本文件很大时,我的解析器会创建一堆Text实例,这会消耗大量内存(由MAT检查)并降低程序的响应能力。有没有更好的方法来实现带语法着色的文本?
编辑:在Windows上渲染文本节点似乎比在我的Linux系统上更快。所以图形驱动程序问题也是如此。
答案 0 :(得分:0)
你难道不能尝试合并相似颜色的Text
个对象来减少所需的Text
个对象的数量吗?
例如。对于开始方法
public void start(Stage primaryStage) {
}
您可以将public void
合并到一个文字对象,将start(
Stage
primaryStage){
合并到另一个文字对象。
用于属性声明,例如
@FXML Label lbl_name, lbl_amount, lbl_categories, lbl_date, lbl_value;
@FXML TextField tf_name;
@FXML ListView<String> lv_categories, lv_brand;
@FXML Spinner sp_amount, sp_value;
@FXML DatePicker dp_date;
您可以使用@FXML
一个Label
,其中每个@FXML
都通过转义序列\n
分隔,以显示多行。这同样适用于对象类型声明,它也应该以相同的方式着色。
例如。 lbl_name, lbl_amount, lbl_categories, lbl_date, lbl_value;
可以合并在一起。
另一种方法是仅实例化实际显示给用户的行。
如果您要解析要显示在HTML中的代码,您还可以将HTMLEditor
与HTML标记结合使用,以突出显示您的语法。