如何重绘java applet中的绘制方法?

时间:2016-03-15 08:36:29

标签: java swing applet paint jcreator

我想使用applet在2"帧"。

之间切换

我想使用applet绘制一些东西,然后将其删除并绘制其他内容。有没有办法做到这一点?

示例:

if(true){
    public void paint1(Graphics g) {
        g.setColor(Color.black);
        g.fillRect( 80,400, 20, 10 );
    }
}else
    public void paint2(Graphics g) {
        g.setColor(Color.green);
        g.fillRect( 50,440, 70, 60 );
    }
}

我尝试过的所有尝试都破坏了小程序。

我的项目:我和我的朋友正在编写一个简单的代码,我们需要使用某种applet图形。我们想出了一个程序,其中2个字符上下跳跃。问题是我们将会有一个" AI"每当他感觉到这种情况时就跳起来。所以CardLayout不会工作,因为我们控制着一切。

2 个答案:

答案 0 :(得分:3)

如果您打算"切换"我建议使用 CardLayout 在两幅图纸之间。

但是,如果您想根据条件继续绘制当前所拥有的内容,可以执行以下操作:

class DrawingSpace extends JPanel{

    private BufferedImage display;
    //Other variables, initializations, constructors not shown

    private void init(){
        display = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
    }

    public void draw(){
        if(whatever){    //if whatever == true
            Graphics2D g2 = display.createGraphics();
            g2.setColor(Color.BLACK);
            g2.fillRect( 80, 400, 20, 10 );
            repaint();
        }else{
            Graphics2D g2 = display.createGraphics();
            g2.setColor(Color.GREEN);
            g2.fillRect( 50, 440, 70, 60 );
            repaint();
        }
    }

    @Override
    public void paintComponent(Graphics g){
        super.paintComponent(g);
        g.drawImage(display, 0, 0, width, height, null);
    }
}

答案 1 :(得分:0)

那么第一个问题是:你什么时候想换? 按一下按钮?几毫秒后?

使用按钮非常简单: 您只需绘制2个面板并默认显示第一个面板。按下按钮后,您可以使用方法repaint()和revalidate()来刷新JFrame。