Swing 新手,但 Java 新手。我正在尝试以下操作:
public void actionPerformed(ActionEvent e) {
methodA();
pane.repaint();
methodB();
pane.repaint();
}
其中 methodB() 需要很长时间。我希望它绘制两次,但第一次绘制调用从未发生。就好像我这样做了:
public void actionPerformed(ActionEvent e) {
methodA();
methodB();
pane.repaint();
}
抱歉,如果这是基本的,但我尝试过搜索,但仍然不明白为什么。
我尝试过直接调用paint,它按预期工作,只是应用程序在每次重绘时都会闪烁。
最佳答案
actionPerformed
在事件调度线程 (EDT) 中调用,这也是执行绘制的地方,repaint
仅标记要重新绘制的组件。这意味着绘画只能在 actinPerformed
执行完成后才能完成。
不应在 EDT 中执行长时间运行的任务,请使用 SwingWorker或另一个线程。
表示学习Swing's Threading Policy !
关于java - 基本 Java Swing JFrame 重绘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44625482/