1

-大家好!我正在制作一个模拟波干扰的 Java 小程序,我几乎已经完成了(将在 GPL 下获得许可)。但是,我有两个关于 AWT 绘制周期的问题,我很难找到答案。

  1. 我想制作一个“关于”的叠加层,当我按下按钮时会出现。我想这样做的方法是用我的静态消息和图例对象在整个小程序窗口上绘制。问题是阻止 AWT 组件在不使用 remove() 的情况下将自己绘制在前台。有没有办法让 AWT 暂时停止绘制自己?

  2. 对于我的驻波模式,我希望每次驻波达到最大振幅时计算节点和波腹标记并将其绘制到辅助图形(所有这些我都可以自己完成),但绘制到主图形(因此显示)每个油漆周期。有人可以解释这样做的步骤吗?我想这将涉及创建第二个图形对象,绘制一次,然后在每个周期将其绘制到主图形。

如果您能回答我的任何一个问题,我将不胜感激!

干杯,杰克艾利森

4

1 回答 1

0

回答你的第一个问题:

如果您已将paint()/方法包含在代码中,则无法禁用它。paintComponent()如果它在那里,它就会运行。但是,您可以创建一个标志,以便只有当标志为真时,才会绘制内容。让我告诉你我的意思:

boolean flag;

...

public void paintComponent(Graphics comp) {
    if (flag) {
        Graphics2D comp2D = (Graphics2D) comp;
        //drawing statements
    }
}

public void actionPerformed(ActionEvent event) {
    flag = true;
    repaint();
}
于 2012-07-08T14:27:45.903 回答