基本Java Swing JFrame重绘

时间:2017-06-19 08:20:09

标签: java swing jframe repaint

Swing的新手,但不是Java。我正在尝试以下方法:

public void actionPerformed(ActionEvent e) {

methodA();
pane.repaint();
methodB();
pane.repaint();

}

其中methodB()需要很长时间。我想要画两次,但第一次油漆调用永远不会发生。它好像我做了:

public void actionPerformed(ActionEvent e) {

methodA();
methodB();
pane.repaint();

}

很抱歉,如果这是基本的,但我已经尝试过搜索,但我仍然不明白为什么。

我试过直接调用paint,它按预期工作,除了应用程序在每次重绘时闪烁。

1 个答案:

答案 0 :(得分:4)

在事件调度线程(EDT)中调用

actionPerformed,它也是执行绘制的地方,repaint仅标记要重新绘制的组件。这意味着只能在actinPerformed完成执行后才能完成绘画。

长时间运行的任务不应该在EDT中执行,使用SwingWorker或其他线程。

表示要研究Swing's Threading Policy