作者del680202 (DAINA)
看板java
标题[问题] swing上的问题
时间Mon Mar 23 15:56:57 2009
今天我写了一只程式
希望自动去分析一串文字,然後把找到的文字放到JList显示出来
单执行绪跑的时候没问题
但是多执行绪就会怪怪的
jButton1.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
parser(jTextField1.getText());
}
});
如果我把parser用另外一个执行绪去跑
就会出现
Exception
in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 630
at javax.swing.plaf.basic.BasicListUI.updateLayoutState(Unknown Source)
at javax.swing.plaf.basic.BasicListUI.maybeUpdateLayoutState(Unknown Source)
at javax.swing.plaf.basic.BasicListUI.getPreferredSize(Unknown Source)
at javax.swing.JComponent.getPreferredSize(Unknown Source)
...
像这样的例外
ArrayIndexOutOfBoundsException
而且有时候JList新增的内容不会被显示出来
但是我确定有东西新增进去 但是他就"偶尔"就会显示不出新增东西
可是单执行绪时不会出现这样的问题
然後我更新List的程式
public void run() {
while(true){
synchronized (_list) {
try {
while (_list.isEmpty()) {
_list.wait();
}
} catch (InterruptedException e) {
// TODO Auto-generated catch bloc
e.printStackTrace();
}
_model.addElement(_list.remove(0));
//MyUtil.sleep(10);
}
}
------------------
我设定是只要_list有东西 就把他放到JList的DefaultComboxModel里面
用多执行绪时就会出现上面题的例外
但是很神奇的,只要我让更新JList的程式sleep一下
也就是注解起来那行
就又不会出现我上面出现的问题......
请问这原因是什麽?
我有想过是不是event dispatch thread的影响...
但是详细我实在是不清楚
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.117.169.131
※ 编辑: del680202 来自: 140.117.169.131 (03/23 16:05)