如何在paintComponent中更改圆的大小?

时间:2013-10-13 20:09:23

标签: java paintcomponent repaint

我有这个paintComponent,我必须绘制一个大小为int size的圆圈,因为它必须由setSmallCircle()setBigCircle()改变。但我对java很新,我不知道如何做到这一点

到目前为止,我有这个:

public class ReactionPanel extends JPanel {

boolean setSmallCircle= false;
Color color = new Color (255,0,0); //color  = red
Color c = new Color (255,255,0); //color = yellow
int size;
int x = 250;
int y = x;

public void paintComponent(Graphics g){
  super.paintComponent(g);
  if (setSmallCircle == true){
    setSmallCircle(g);
  }
  else if(setSmallCircle==true){
    setBigCircle(g);
  }
}

void setSmallCircle(Graphics g, Color c){
  size = 50;
  g.setColor(c);
  g.drawOval(x,y,size,size);
  g.fillOval(x,y,size,size);
}

void setBigCircle(Graphics g, Color c){
  size = 150;
  g.setColor(c);
  g.drawOval(x,y,size,size);
  g.fillOval(x,y,size,size);
}
}

但它似乎没有编译。 (错误:setBigCircle(java.awt.Graphics,java.awt.Color) in ReactionExperiment.ReactionPanel cannot be applied to (java.awt.Graphics)) 我做错了什么,我该如何解决这个问题?

哦,我也必须打电话给重拍。我是在我的类ReactionPanel或其他地方的闭括号之前做的吗?

感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

您已将setSmallCircle()声明为

void setSmallCircle(Graphics g, Color c)

这意味着您需要传递两个参数,一个Graphics对象和一个Color对象。但是,您只能使用

调用它
setSmallCircle(g);

仅将Graphics对象传递给方法。

答案 1 :(得分:0)

if (setSmallCircle == true){
  setSmallCircle(g);
}
else if(setSmallCircle==true){ // Error
  setBigCircle(g);
}

而是在paintComponent中执行:

if (setSmallCircle) {
    size = 50;
} else {
    size = 150;
}
g.setColor(c);
g.drawOval(x,y,size,size);
g.fillOval(x,y,size,size);

而不是someBoolean == true可以使用someBoolean和。{ 而不是someBoolean != true不使用{!):!someBoolean。 这里else就足够了。