当前位置: 代码迷 >> 综合 >> JavaFX TextArea组件报错ArrayIndexOutOfBoundsException
  详细解决方案

JavaFX TextArea组件报错ArrayIndexOutOfBoundsException

热度:13   发布时间:2023-11-27 05:30:14.0

之前做的小工具出现了点问题,时不时报出数组越界的错误,但是定位不到具体的代码。

今天花点时间解决一下。

想要实现的效果大概是这样的:多个线程轮流在TextArea上显示消息,为了保证数据实时更新,需要不断的刷新TextArea组件。

原代码是这样的

    public void refresh() {if(currentServerName == null) {//拒绝刷新return;}setText("");appendText(LOG_MAP.getOrDefault(currentServerName, ""));setScrollTop(Double.MAX_VALUE);}

直接在外部线程(自己创建的线程)去刷新TextArea中的数据。

后查阅资料发现必须在JavaFX自己的线程里修改容器内容才能保证不会报错。所以用Platform包裹一下,修改后的代码如下:

    public void refresh() {if(currentServerName == null) {//拒绝刷新return;}setText("");appendText(LOG_MAP.getOrDefault(currentServerName, ""));setScrollTop(Double.MAX_VALUE);Platform.runLater(()->{setText("");appendText(LOG_MAP.getOrDefault(currentServerName, ""));setScrollTop(Double.MAX_VALUE);});}

  相关解决方案