我整天都在尝试不同的变化,但收效甚微。有人可以帮忙解释我做错了什么吗?我只是线程方面的初学者。
private JTextArea text = new JTextArea();
private JButton button = new JButton("Cancel");
public StatusFrame() {
text.setEditable(false);
this.add(text);
this.add(button, BorderLayout.EAST);
this.setSize(new Dimension(150, 100));
this.setVisible(true);
}
public void updateStatus(String textIn) {
text.setText(textIn);
}
public JButton getButton() {
return button;
}
在另一堂课中,我正在调用可能需要一段时间才能完成的方法。我希望能够调用 StatusFrame.updateStatus() 方法来让用户了解进度。这就是我所拥有的:
someMethod() {
// prevent GUI from freezing using threads
final Runnable r = new Runnable() {
public void run() {
status = new StatusFrame();
}
};
SwingUtilities.invokeLater(r);
//do something
status.update("process 1 completed");
//do something else
status.updateStatus("Process 2 completed");
}
框架出现,但运行/处理后没有任何代码似乎运行/处理。它只是停止/阻止/某事。但 GUI 仍然处于活动状态
感谢您的任何建议。
PS:我尝试过使用invokeAndWait()
方法,但再次不确定我是否以正确的方式进行操作。现在最好快速修复,因为我还没有学到很多关于线程的知识。欢迎任何指示。