如何用java清除框架屏幕?

如何用java清除框架屏幕?,java,swing,jframe,Java,Swing,Jframe,我在玩砖块游戏。我希望屏幕在每0.1秒后变得清晰,这样我就可以重新绘制帧屏幕上的所有内容 是否有任何方法可以在不发生任何事件的情况下直接清除帧屏幕???如果您希望每X毫秒发生一次事件,可以使用一个包含ActionListener的。至于实际的清理行动,首先想到的是,但我怀疑可能有更好的方法。您应该覆盖 public void paint(Graphics g) 在那里画你所有的画 然后你启动一个定时器,它调用 repaint(); 以下是一个基本示例: public class MainFr

我在玩砖块游戏。我希望屏幕在每0.1秒后变得清晰,这样我就可以重新绘制帧屏幕上的所有内容


是否有任何方法可以在不发生任何事件的情况下直接清除帧屏幕???

如果您希望每X毫秒发生一次事件,可以使用一个包含ActionListener的。至于实际的清理行动,首先想到的是,但我怀疑可能有更好的方法。

您应该覆盖

public void paint(Graphics g)
在那里画你所有的画

然后你启动一个定时器,它调用

repaint();
以下是一个基本示例:

public class MainFrame extends JFrame {

    int x = -1;
    int inc;

    public MainFrame() {
        Timer timer = new Timer(10, new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                MainFrame.this.repaint();
            }
        });
        timer.start();
    }

    public void paint(Graphics g) {
        // don't call super.paint(g), we do all the painting

        if(x > getWidth()) inc = -5;
        if(x < 0) inc = 5;

        x += inc;

        // here we clear everything
        g.setColor(Color.BLACK);
        g.fillRect(0, 0, getWidth(), getHeight());

        g.setColor(Color.BLUE);
        g.drawLine(x, 0, getWidth()-x, getHeight());
    }

    public static void main(String[] args) {
        MainFrame mainFrame = new MainFrame();
        mainFrame.setSize(800, 600);
        mainFrame.setVisible(true);
    }
}
公共类大型机扩展JFrame{
int x=-1;
国际公司;
公共主机(){
计时器计时器=新计时器(10,新ActionListener(){
已执行的公共无效操作(操作事件arg0){
MainFrame.this.repaint();
}
});
timer.start();
}
公共空间涂料(图g){
//不要叫super.paint(g),所有的画都是我们做的
如果(x>getWidth())inc=-5;
如果(x<0)inc=5;
x+=公司;
//现在我们把一切都清理干净了
g、 设置颜色(颜色为黑色);
g、 fillRect(0,0,getWidth(),getHeight());
g、 setColor(Color.BLUE);
g、 抽绳(x,0,getWidth()-x,getHeight());
}
公共静态void main(字符串[]args){
大型机=新的大型机();
大型机。设置大小(800600);
mainFrame.setVisible(true);
}
}

按彼得的建议去做,但不要做


我还怀疑你会发现,这将闪烁非常严重(不断重画整个屏幕)。你可能想找到更好的方法。。。不幸的是,我对这个领域了解不多

我不知道它不在这里工作。我的意思是,新的长方形比前一个长方形更容易书写。导致一片混乱。我想让我的画师先清除所有以前的画,然后再重新画。。它不会在这里发生……我不知道这怎么会发生。您是否尝试过在不更改任何内容的情况下运行我的示例的副本以查看其是否有效?也许你可以发布你的代码的相关部分?优秀的sun earticle链接!如果希望通过Swing绘制边界,我将覆盖paintComponent。因为这不是我想要的,我用油漆来提高性能。您提到的闪烁可以通过双缓冲(在sun文章中描述)来避免。