Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.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 使JFrame不重新绘制_Java_Swing_Jframe_Repaint - Fatal编程技术网

Java 使JFrame不重新绘制

Java 使JFrame不重新绘制,java,swing,jframe,repaint,Java,Swing,Jframe,Repaint,我试着不用Java重新绘制我的窗口。我有: public void paint(Graphics g) { super.paint(g); Graphics2D g2d = (Graphics2D) g; g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); ball.paint(g2d); }

我试着不用Java重新绘制我的窗口。我有:

public void paint(Graphics g) {
        super.paint(g);
        Graphics2D g2d = (Graphics2D) g;
        g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
        ball.paint(g2d);

    }
总的来说:

while (true) {
            game.move();
            game.repaint();
            Thread.sleep(10);
        }
我的JFrame是window,我尝试了
window.setIgnoreRepaint(true)但没有变化。你能帮我一下吗?谢谢:)

super.paint(g)
重新绘制窗口-您需要删除此行

public void paint(Graphics g) {
        // super.paint(g);
        Graphics2D g2d = (Graphics2D) g;
        g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
        ball.paint(g2d);

    }
必须替换为

            Timer t=new Timer(10,new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    game.move();
                    game.repaint();
                }
            });
            t.start();

和重写内容窗格的paintComponent()。

您应该尝试重写paintComponent(),而不是paint(图形g):)否:a)不要重写框架的paint,而要重写其内容窗格的paintComponent b)super.paint必须始终调用,除非您需要非常奇怪的效果;-)
            Timer t=new Timer(10,new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    game.move();
                    game.repaint();
                }
            });
            t.start();