在Swing Java中向JList添加元素
作者:互联网
我有一个单击按钮时执行的功能.假设有一个循环将1到10添加到JList.我将该数据添加到DefaultListModel.它工作得很好,数字也增加了.然后我在循环中添加了一个Thread.sleep(1000).但输出是不同的.我想每秒添加1个元素.但现在它等待10秒,并在第10秒结束时将所有1到10加在一起.我错了吗?
List processList = listNumbers.getSelectedValuesList();
DefaultListModel resultList = new DefaultListModel();
listResult.setModel(resultList);
for (int i = 0; i < processList.size(); i++) {
resultList.addElement(String.valueOf(i));
try {
Thread.sleep(1000);
}
catch (InterruptedException ex) {
}
}
解决方法:
您应该在单独的线程中更新列表,否则最终会阻止事件派发线程.
请尝试以下方法:
final DefaultListModel model = new DefaultListModel();
final JList list = new JList(model);
//another thread to update the model
final Thread updater = new Thread() {
/* (non-Javadoc)
* @see java.lang.Thread#run()
*/
@Override
public void run() {
for (int i = 0; i < 10; i++) {
model.addElement(i);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
}
}
};
updater.start();
标签:jlist,java,swing 来源: https://codeday.me/bug/20191006/1861814.html