【发布时间】:2017-07-03 08:34:24
【问题描述】:
我正在尝试将 TextArea 设为只读,但我将 TextArea 设置为的文本太长,需要滚动。设置文本时会出现滚动条,但滚动条不起作用。
我正在使用 .fxml 文件来保存我的 TextArea,其中包含以下代码:
<TextArea fx:id="consultantScheduleTextArea" editable="false" focusTraversable="false" prefHeight="454.0" prefWidth="597.0" visible="false" />
我的理解是这样做是因为我不能专注于它(比如标签到容器或单击它),它不可编辑(所以我不能通过键入来更改文本),并且它开始不可见.我已尝试将 focusTraversable 设置为 true,但没有改变行为。
在我的控制器中,当单击按钮时,我将可见性设置为 true,然后从数据库中获取一些字符串数据,以某种方式对其进行格式化,然后执行此操作以设置 TextArea 的内容。
myTextArea.appendText(myString);
结果是我的 TextArea 填充了我在 myString 中的内容,滚动条是自动创建的,因为字符串实际上有很多行(比如说 300 行),但我还是不能滚动它。
有什么帮助吗?
编辑:我没有提到,这个 TextArea 被包裹在一个堆栈窗格中,该堆栈窗格被包裹在一个网格窗格中。我认为这些根本不重要,但以防万一。这种层次结构是因为它是我拥有的完整应用程序的一部分,而这只是其中一个 GUI 上的一个组件。
【问题讨论】:
-
我刚刚重新创建了你所说的,我没有问题。确保您使用的是最新的 jdk。
-
我刚用很长的字符串试了一下。加载需要一段时间,但一旦加载,滚动条就可以工作了。
-
试试这个以确保你的 gui 没有被锁定。只是一个疯狂的猜测。 Platform.runLater(()->{consultantScheduleTextArea.appendText(text.toString());});并尽可能使用 StringBuilder。
-
我不认为 GUI 被锁定,因为我可以立即单击其他元素并改变场景。我一直在使用字符串生成器,直到 text.toString() 在 .appendText() 调用中。我也是最新的JDK,哈哈。
-
他们只是疯狂的猜测。我无法重现您的问题。