繁体   English   中英

如何重绘Java applet中的绘画方法?

[英]How to repaint paint methods in java applet?

我想使用applet在2个“框架”之间切换。

我想使用小程序来绘制某些内容,然后将其删除并绘制其他内容。 有什么办法吗?

例:

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崩溃了。

我的项目:我和我的朋友正在编写一个简单的代码,我们需要使用某种applet图形。 我们提出了制作一个程序,其中两个字符上下跳跃的想法。 问题是我们将拥有一个“ AI”,只要他感觉到它就会跳跃。 所以CardLayout无法正常工作,因为那时我们可以控制一切。

如果打算在两个图形之间“切换”,我建议使用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);
    }
}

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM