好的,我得到了我的问题... 的GUI创建这样的:
EventQueue.invokeAndWait(new Runnable() {
@Override
public void run() {
try {
Mainframe frame = new Mainframe();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
而且在施工对象大型机这段代码会被执行的:
final JCheckBoxMenuItem chckbxmntmParsing = new JCheckBoxMenuItem("Parsing");
chckbxmntmParsing.setName("mainframe.menu.data.parsing");
localeChangedListener.add(chckbxmntmParsing);
chckbxmntmParsing.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
if (chckbxmntmParsing.isSelected()) {
parseManager.startParsing();
} else {
parseManager.stopParsing();
}
}
});
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
boolean enabled = false;
String prop = PropertyManager.get().getProperty("parser.continuousparsing.enabled");
if (prop != null) {
if (prop.trim().equals("true") || prop.trim().equals("1")) {
enabled = true;
}
}
chckbxmntmParsing.setSelected(enabled);
}
});
所以ParseThread会开始后的GUI是构建。
对不起,偷你的时间
你为什么不在GUI准备好后开始你的线程? – GETah
同意 - 我不确定你确切的问题是什么,尽管听起来你可以使用SwingWorker做一个额外的PropertyChangeListener的后台处理来通知GUI线程的进度。 –
是的,直到所有需要运行的数据(直接)都存在,我才看到创建线程的任何一点。也就是说,GUI组件不应该属于那个类别 - 如果通过通常的方式通过消息传递GUI,这个问题不应该发生? –