swing为了安全使用SwingUtilities.invokeLater 如下方法,这样在main方法中即主线程里所有的UI操作都放到了swing线程里,包括后边程序里开启的表格,按钮事件都是没问题的。
 public static void main( String[] args ){  
 SwingUtilities.invokeLater( new Runnable()
        {
            public void run()
            {
                MainFrame w = new MainFrame();
                w.setVisible( true );
            }
        } );}
问题:我的程序里有个功能是“入库”,它又起了一个线程,而且线程里又用到了UI的东西,这时这些UI没有放到swing线程里,然后就会报一个错误“Component creation must be done on Event Dispatch Thread”!
我把里边的某个UI操作再放到swin线程里,像上边那样,就好了,关键是里边对UI的操作太多了,放的话得一个个全放。这样不可行,有什么办法呢????

解决方案 »

  1.   

    不是吧,本来我没用SwingUtilities.invokeLater,由于用到了substance外观皮肤,它好像必须的加这,但是我的入库线程里真的不好加,里边干的事太多,UI的操作很频繁,有什么办法吗???
      

  2.   

    我是在用substance这个皮肤,它要求必须放到swing线程里,所以才那么写,但是我的多线程里的UI操作不知道该怎么写。。