2017-02-14 188 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

好了,所以一些如何与它是一个堆栈窗格内,滚动没有工作。不知道为什么,但发生了。

从堆栈窗格解包,它工作正常。