Swing的新手,但不是Java。我正在尝试以下方法:
public void actionPerformed(ActionEvent e) {
methodA();
pane.repaint();
methodB();
pane.repaint();
}
其中methodB()需要很长时间。我想要画两次,但第一次油漆调用永远不会发生。它好像我做了:
public void actionPerformed(ActionEvent e) {
methodA();
methodB();
pane.repaint();
}
很抱歉,如果这是基本的,但我已经尝试过搜索,但我仍然不明白为什么。
我试过直接调用paint,它按预期工作,除了应用程序在每次重绘时闪烁。
答案 0 :(得分:4)
actionPerformed
,它也是执行绘制的地方,repaint
仅标记要重新绘制的组件。这意味着只能在actinPerformed
完成执行后才能完成绘画。
长时间运行的任务不应该在EDT中执行,使用SwingWorker或其他线程。
表示要研究Swing's Threading Policy!