我正在编写一个java程序,您输入一个长度,然后输入一个矩形的宽度,它输出周长和面积。但现在,我想绘制这个数字。但我不知道按下按钮时如何绘制它。应该是这样吗?:
public void paintComponent(Graphics g) {
paintComponent(g);
g.setColor(Color.blue);
g.drawRect(10, 10, 80, 30);
}
public void actionPerformed(ActionEvent e) {
paintComponent();
}
因为当我这样做时,它给我一个错误说:
method paintComponent in class Rectangles cannot be applied to given types;
required: Graphics
found: no arguments
所以我真的不知道该怎么做。
答案 0 :(得分:4)
不,你不应该直接打电话给paintComponent
。无论如何都会自动调用该方法,因此在您单击之前将绘制正方形。
您可以使用布尔标志来表示您单击了按钮并调用repaint()
发布重新绘制请求:
boolean clicked = false;
public void paintComponent(Graphics g) {
if (clicked) {
g.setColor(Color.blue);
g.drawRect(10, 10, 80, 30);
}
}
public void actionPerformed(ActionEvent e){
clicked = true;
repaint();
}
此外,永远不会让方法使用完全相同的参数调用自身。这剪了
public void paintComponent(Graphics g) {
paintComponent(g);
将无限次地调用相同的函数(或直到堆栈已满)。
我想你在某处看到了以下内容:
public void paintComponent(Graphics g) {
super.paintComponent(g);
没关系,它会调用超类的paint方法。它可能没有做任何事情,所以把它留下来不应该伤害(但也不能保留它)。