Java Graphics:将参数传递给paint方法

时间:2014-03-03 12:26:43

标签: java graphics parameters paint

在这个例子中,我正在尝试创建一个骰子。为此,我想将一个介于1和6之间的随机值从我的updateVal方法传递到我的paint方法,但是我不知道如何将参数传递给paint方法。

目前我正在使用重绘方法,显然你无法通过参数传递。

public void updateVal(int i){
    repaint();
} 

public void paint(Graphics g, int rollValue){
    super.paint(g);

    int value = rollValue;
    switch (value) {
        case 1:  g.fillOval(200, 200, 100, 100);
                 break;
        case 2:  g.fillOval(350, 50, 100, 100);
                 g.fillOval(50, 450, 100, 100);
                 break;
        case 3:  g.fillOval(350, 50, 100, 100);
                 g.fillOval(200, 250, 100, 100);
                 g.fillOval(50, 450, 100, 100);
                 break;
        case 4:  g.fillOval(350, 50, 100, 100);
                 g.fillOval(50, 350, 100, 100);
                 g.fillOval(50, 50, 100, 100);
                 g.fillOval(350, 350, 100, 100);
                 break;
        case 5:  g.fillOval(350, 50, 100, 100);
                 g.fillOval(50, 350, 100, 100);
                 g.fillOval(50, 50, 100, 100);
                 g.fillOval(350, 350, 100, 100);
                 g.fillOval(200, 200, 100, 100);
        break;
        case 6:  g.fillOval(350, 50, 100, 100);
                 g.fillOval(50, 350, 100, 100);
                 g.fillOval(50, 50, 100, 100);
                 g.fillOval(350, 350, 100, 100);
                 g.fillOval(50, 200, 100, 100);
                 g.fillOval(350, 200, 100, 100);
        break;
    }
}

1 个答案:

答案 0 :(得分:2)

只需将成员变量添加到您正在使用的Canvas,创建一个setter并在调用paint()方法之前设置它:

private int rollValue;

public void setRollValue(int val) { this.rollValue = val; }

public void paint(Graphics g) {
  super.paint(g);

  switch (rollValue) {
  ...
  }
}

public void updateVal(int i){
  setRollValue(i);
  repaint();
}