繁体   English   中英

在Java中按下按钮时如何绘制正方形

[英]How to draw a square when a button is pressed in java

我正在编写一个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

所以我真的不知道该怎么办。

不,您不应该直接调用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方法。 它可能什么也没做,因此将其遗弃也不会造成伤害(但也不会保留它)。

暂无
暂无

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

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