Java 删除在图像上绘制的矩形

Java 删除在图像上绘制的矩形,java,swing,netbeans-7,jlabel,rectangles,Java,Swing,Netbeans 7,Jlabel,Rectangles,我在jLabel中显示了一个图像。单击图像的任何部分时,将绘制一个40x40的矩形。现在我想在按下remove(jButton)时从图像中删除绘制的矩形。我试过下面的代码 public void paint (Graphics g) { g2 = (Graphics2D) g; g2.clearRect(n,n1, 40,40 ); } private void jButton2ActionPerformed(java.awt.eve

我在
jLabel
中显示了一个图像。单击图像的任何部分时,将绘制一个40x40的矩形。现在我想在按下remove(jButton)时从图像中删除绘制的矩形。我试过下面的代码

    public void paint (Graphics g) {
       g2 = (Graphics2D) g;

       g2.clearRect(n,n1, 40,40 ); 

    }

     private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
        // TODO add your handling code here:

        repaint(n,n1,40,40);
    }

它只是用背景色填充矩形,而不是删除。有没有办法在不填充任何颜色的情况下删除矩形?即保留原始图像本身?

自定义绘制是在标签的paintcompent(..)方法中完成的,而不是paint()方法。您还应该调用super.paintComponent(g)作为第一条语句

在您的例子中,似乎需要一个布尔变量来控制矩形的绘制时间。可能是这样的:

@Override
protected void paintComponent(Graphics g)
{
    super.paintComponent(g);

    if (paintRectangle)
        // paint the rectangle
}

现在,在ActionListener中,您只需将paintRectangle变量设置为false,并在组件上调用repaint()。

是否调用
getGraphics()
来绘制图像?如果是的话,你应该看看