在一个需要动态更新JTable的程序中,为了实现动态刷修数据。在主线程之外开了个新线程来进行算法的执行还有数值计算,然后最后调用
jTable.updateUi();
的方法。
然后图形界面上是一点问题都没有的,但有次突然发现,某次运行的时候,控制台爆了个空指针的异常。
原因:
Swing是有自己的一套线程机制的,有三个线程,具体的可以百度了解。
界面操作最好交给 Swing自己的线程处理:
那么怎么交给swing处理呢?
SwingUtilities.invokeLater(new Runnable() { @Override public void run() { // TODO Auto-generated method stub jTableRunResult.updateUI(); } });
问题解决,那个异常再也没有抛出了。