【问题标题】:How to repaint paint methods in java applet?java - 如何在Java小程序中重绘绘画方法?
【发布时间】:2016-03-15 08:36:28
【问题描述】:

我想用小程序在两个“帧”之间切换。

我想使用一个小程序来绘制一些东西,然后删除它并绘制其他东西。有没有办法做到这一点?

例子:

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 );
    }
}

我尝试过的所有尝试都使小程序崩溃。

我的项目:我和我的朋友正在编写一个简单的代码,我们需要使用某种小程序图形。我们的想法是制作一个让 2 个角色上下跳跃的程序。问题是我们将有一个“AI”,只要他想跳就跳。所以 CardLayout 不会起作用,因为这样我们就可以控制一切。

【问题讨论】:

  • 绘画 something vs something 是一个非常模糊的描述,所以我真的不知道你需要什么,但看看CardLayout。这是在不同 GUI 状态之间切换的典型方式。
  • 我问了一个问题,你回答正确。我的错。我已经编辑了这个问题,以便更准确地提出我需要的内容。
  • @Marc 我也建议使用 CardLayout,除非您可以更具体地在 2 帧中绘制什么。
  • @Marc 看看我的解决方案是否能解决您的问题。它是根据您当前拥有的内容编写的。所以不用直接调用repaint(),你可以调用draw(),它会根据你设置的条件渲染图形。
  • @user3437460 不错;p

标签: java swing applet paint jcreator


【解决方案1】:

如果您打算在两张图纸之间“切换”,我建议您使用 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】:

    嗯,第一个问题是:你想什么时候切换? 点击按钮?几毫秒后?

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-13
      • 2016-10-11
      • 2015-09-01
      相关资源
      最近更新 更多