2016-07-24 68 views
0

我正在使用語法突出顯示的文本編輯器。目前,可編輯文本是以HBox列表的形式實現的,這些行包含Text實例列表,每個實例都包含一個單詞。這樣我可以改變每個單詞的風格。爲語法着色的文本的有效處理

顯然,這是錯誤的方法,因爲當文本文件很大時,我的解析器會創建一個消耗大量內存(由MAT檢查)的Text實例負載,並降低程序的響應速度。用語法着色來實現文本是否有更好的方法?

編輯:似乎渲染文本節點在Windows上比在我的Linux系統上更快。所以也是圖形驅動程序問題。

回答

0

難道你不能嘗試合併Text對象,它們的顏色相似以減少所需的對象數量? 例如爲啓動方法

public void start(Stage primaryStage) { 
} 

你可以合併public void到一個文本對象和start(StageprimaryStage){到另一個。

對於屬性聲明如

@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標記來突出顯示您的語法。