Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java小程序,60次/秒重绘方法和多边形_Java_Eclipse_Applet - Fatal编程技术网

Java小程序,60次/秒重绘方法和多边形

Java小程序,60次/秒重绘方法和多边形,java,eclipse,applet,Java,Eclipse,Applet,我已经运行了每秒重新绘制60次的方法,并且我有一个包含4个多边形的绘制方法。还有4个按钮。当你按下第一个按钮时,poligons将按顺序排列,红色的在顶部,当你按下第二个按钮时,多边形swop,然后绿色在顶部,其他在后面。在eclipse上一切正常,但当我在终端小程序查看器中运行它时,多边形不会停止并不断刷新。我怎么能做出这样一个声明,60次/秒地重新绘制所有内容,但当单击按钮时,多边形只重新绘制一次 public void run() { long lastTime = System.

我已经运行了每秒重新绘制60次的方法,并且我有一个包含4个多边形的绘制方法。还有4个按钮。当你按下第一个按钮时,poligons将按顺序排列,红色的在顶部,当你按下第二个按钮时,多边形swop,然后绿色在顶部,其他在后面。在eclipse上一切正常,但当我在终端小程序查看器中运行它时,多边形不会停止并不断刷新。我怎么能做出这样一个声明,60次/秒地重新绘制所有内容,但当单击按钮时,多边形只重新绘制一次

public void run() {
    long lastTime = System.nanoTime();
    double ns = 1000000000.0 / 1.0;
    double delta = 0;
    requestFocus();
    while (running) {
        long now = System.nanoTime();
        delta += (now - lastTime) / ns;
        lastTime = now;
        while (delta >= 1) {
            delta--;
            update();
            repaint();
            validate();

        }
    }
}
油漆方法

    public void paint(Graphics g) {
            // gives sharper graphics
            g2 = (Graphics2D) g;
            g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
                    RenderingHints.VALUE_ANTIALIAS_ON);
            windows.drawRact(new Color(0xa0, 0xd1, 0xe3), g2);
    if (mlistener.firstWin) {

                add(analisysBtn);
                add(button_1);
                add(LoadFileButton);
                ifFirst = true;
                ifFirst2 = true;
                ifFirst3 = true;

                test2 = 0;
                test3 = 0;
                test4 = 0;
                windows.drawCompareWindow(g2);
                windows.drawFourthWindow(g2);
                windows.drawThirdWindow(g2);
                windows.drawSecondWindow(g2);
                windows.drawFirstWindow(g2);
}
    }

您正在从
paint(Graphics g)
方法中向GUI添加组件,这是您应该永远不要做的事情。这个方法会被反复调用,很多次都是在您的控制之外,而且它需要非常快速。因此,没有程序逻辑,没有GUI结构更改,也没有长时间运行的代码

另外,使用Swing并重写JPanel的
paintComponent(Graphics g)
方法比直接在顶级窗口中重写paint要好得多

此外,还应始终记住在覆盖内部调用super的方法,通常作为第一个方法调用,以允许组件进行内部管理绘制


另外,我会使用Swing计时器而不是
while(true)
循环来运行我的动画循环。

windows.drawCompareWindow(g2);窗。四向窗(g2);windows.drawindow(g2);窗口。DrawSecond窗口(g2);窗口。drawFirstWindow(g2);这些都是polygonsI,我必须更深入地研究它。问题是这是我的java评估工作,我已经提交了它,在最好的情况下,我将有机会更改或添加几行。。。我不知道它在终端上的显示会和eclipse不同,很明显,他们会如何运行它。对我来说有什么快速的解决办法吗?除了这些多边形,其余的一切看起来都正常工作。@user3185161:如果不运行代码,很难说出什么问题。