有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java JPanel图形清除和重新绘制?

我有一个带有paintComponent()函数的JPanel。我将调用它一次,然后当用户单击另一个JButton时,我将设置一些标志,并希望再次调用此函数,因为在设置标志后,它将执行一些稍微不同的操作

所以我想知道的是:如何从paintComponent中清除现有的内容?要重新绘制,我是否需要再次调用^{

目前我正在尝试以下方法:

flag2 = true;
repaint(); //I expect (want) paintComponent to be called again

在paint component中,我会做如下工作:

if (flag2==true) {
    g.drawRect(...);
} else {
    g.drawLine(...);
}

但通过测试,我现在做的似乎有问题

谢谢你的帮助


共 (3) 个答案

  1. # 1 楼答案

    首先,为什么不使用枚举而不是布尔值

    enum Enum { 
        RECTANGLE,
        LINE,
        CIRCLE
    }
    
    Enum choice = RECTANGLE; //default to RECTANGLE
    
    switch(choice) { 
       // case RECTANGLE, LINE, CIRCLE
    }
    

    关于你的问题,你能回答我对你问题的评论吗

  2. # 2 楼答案

    更改配电盘的属性时,需要调用:

    panel.repaint();
    

    使部件重新喷漆

    那么paintComponent()方法中的第一条语句应该是:

    super.paintComponent(g);
    

    这将绘制背景,以便您现在可以进行自定义绘制

    如果你需要更多的帮助,那么发布你的SSCCE来说明问题

  3. # 3 楼答案

    要清除所有以前绘制的图形,请调用^{}