我正在使用語法突出顯示的文本編輯器。目前,可編輯文本是以HBox列表的形式實現的,這些行包含Text實例列表,每個實例都包含一個單詞。這樣我可以改變每個單詞的風格。爲語法着色的文本的有效處理
顯然,這是錯誤的方法,因爲當文本文件很大時,我的解析器會創建一個消耗大量內存(由MAT檢查)的Text實例負載,並降低程序的響應速度。用語法着色來實現文本是否有更好的方法?
編輯:似乎渲染文本節點在Windows上比在我的Linux系統上更快。所以也是圖形驅動程序問題。
我正在使用語法突出顯示的文本編輯器。目前,可編輯文本是以HBox列表的形式實現的,這些行包含Text實例列表,每個實例都包含一個單詞。這樣我可以改變每個單詞的風格。爲語法着色的文本的有效處理
顯然,這是錯誤的方法,因爲當文本文件很大時,我的解析器會創建一個消耗大量內存(由MAT檢查)的Text實例負載,並降低程序的響應速度。用語法着色來實現文本是否有更好的方法?
編輯:似乎渲染文本節點在Windows上比在我的Linux系統上更快。所以也是圖形驅動程序問題。
難道你不能嘗試合併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標記來突出顯示您的語法。