我有一个 JPanel,在其上执行自定义绘画可能需要 15 秒。
问题是,当我在绘制 JPanel 时单击菜单时,绘制是在菜单上完成的,并且选项不可见。(见图片中扭曲的文字)
如果我在绘画完成后单击菜单,则不会出现不需要的行为,但是当我将鼠标指针移到不同的菜单上时,同样的事情又会发生。例如,绘画完成后,如果我点击“应用程序”,不会出现副作用,但是当我将鼠标指针移到“帮助”上时,就会出现前面描述的行为。如何避免这种情况?
我在一个单独的线程中在 paintComponent() 方法之外执行绘画:
public class RandomIFSPanel extends JPanel {
RandomIFSPanelRenderer randomIFSPanelRenderer;
@Override
public void paintComponent(Graphics graphics) {
try {
randomIFSPanelRenderer.stop();
} catch (Exception e) {
}
randomIFSPanelRenderer = new RandomIFSPanelRenderer();
randomIFSPanelRenderer.start();
}
class RandomIFSPanelRenderer extends Thread {
@Override
public void run() {
for (int i = 0; i < numberOfPoints; i++) {
Graphics g=getGraphics();
g.setColor(Color.WHITE);
g.drawLine........
}
}
}
}