2017-02-14 12 views
0

Я пытаюсь сделать TextArea только для чтения, но текст, который я устанавливаю TextArea, так долго, что его нужно прокручивать. Когда текст установлен, появляется полоса прокрутки, но полоса прокрутки не работает.Только для чтения TextArea с панелью прокрутки [JavaFx]

Я использую файл .fxml держать мою TextArea со следующим кодом:

<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 строк), но опять же я не могу прокручивать его.

Любая помощь?

EDIT: Я не упоминал, что этот TextArea завернут в стек стек, который завернут в gridpane. Я не думаю, что это вообще, но на всякий случай. Эта иерархия заключается в том, что ее часть полного приложения у меня есть, и это всего лишь один компонент в одном из графических интерфейсов.

+0

Я просто воссоздал то, что вы сказали, что сделал, и у меня нет проблем. Убедитесь, что вы используете последний jdk. – Sedrick

+0

Я просто попробовал его с очень длинной строкой. Потребовалось некоторое время, чтобы загрузить, но как только загрузилась полоса прокрутки. – Sedrick

+0

Попробуйте это, чтобы убедиться, что ваш gui не заблокирован. Просто дикая догадка. Platform.runLater (() -> {consultantScheduleTextArea.appendText (text.toString());}); и используйте StringBuilder, где вы можете. – Sedrick

ответ

0

пытаются использовать это на TextArea

myTextArea.setEditable(false); 

это сделать вашу текстовую область только для чтения и сделает прокрутки позволит

+0

Я делаю это в fxml ... editable = "false" Я сделал это в коде, как вы сказали вместо fxml, все еще не работает, эти функции одинаковы, поэтому я так не думал. все равно :) –

+0

где вы его добавили?в какой части кода вы его добавляете? –

+0

На FXML, когда вы создаете элемент, свойство может быть установлено там. Или вы можете установить его в контроллере. Я сделал и то, и другое, чтобы сделать его редактируемым (ложным) и не работать. –

1

Alright, так как некоторые с ним, находясь внутри панели стека прокрутки не работает. Не знаю почему, но это произошло.

Unwrapped из стека и работает отлично.