2017-02-14 191 views
0

我想讓TextArea只讀,但是我設置TextArea的文本太長了,需要滾動。設置文本時會出現滾動條,但滾動條不起作用。帶有滾動條的只讀文本區域[JavaFx]

我使用的是.fxml文件來保存我用下面的代碼文本區:

<TextArea fx:id="consultantScheduleTextArea" editable="false" focusTraversable="false" prefHeight="454.0" prefWidth="597.0" visible="false" /> 

我的理解是,這是做它,所以我不能專注於它(如標籤的容器或點擊進入它),它不可編輯(所以我不能通過鍵入來改變文本),並且它不可見。我已經嘗試將focusTraversable設置爲true,而不會改變行爲。

在我的控制器中,當單擊按鈕時將可見性設置爲true,然後從db獲取一些字符串數據,並以某種方式對其進行格式化,然後執行此操作來設置TextArea的內容。

myTextArea.appendText(myString); 

結果我的textarea裏充滿了我在myString的內容,滾動條自動創建的,因爲該字符串實際上是很多行(可以說300線),但我又不能滾動它。

任何幫助?

編輯:我沒有提到,這個TextArea被包裹在一個包裹在一個網格窗格中的堆棧窗格中。我根本不認爲這些問題,但以防萬一。這個層次結構是因爲它是我完整應用程序的一部分,而這只是其中一個GUI的一個組件。

+0

我剛剛重新創建了你說的話,我沒有問題。確保你使用的是最新的jdk。 – Sedrick

+0

我剛剛用一個很長的字符串試了一下。它需要一段時間來加載,但一旦加載滾動條工作。 – Sedrick

+0

試試這個以確保你的gui沒有鎖定。只是一個瘋狂的猜測。 Platform.runLater(() - > {consultantScheduleTextArea.appendText(text.toString());});並儘可能使用StringBuilder。 – Sedrick

回答

0

嘗試使用此對您的文本區

myTextArea.setEditable(false); 

這讓你的文本區域只讀的並且使滾動條使

+0

我這樣做的fxml ... editable =「false」 我在代碼中這樣做,而不是fxml,仍然無法正常工作,這些功能相同,所以我不這麼認爲。無論如何嘗試:) –

+0

你在哪裏準確地添加它?你添加了哪部分代碼? –

+0

在FXML上,當您創建一個項目時,可以在其中設置屬性。或者您可以將其設置在控制器中。我已經完成了這兩個工作,使其可編輯(假),既不工作。 –

1

好了,所以一些如何與它是一個堆棧窗格內,滾動沒有工作。不知道爲什麼,但發生了。

從堆棧窗格解包,它工作正常。