删除在图像上绘制的矩形

时间:2014-03-13 18:26:53

标签: 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.event.ActionEvent evt) {
        // TODO add your handling code here:

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

它只是用背景颜色填充矩形而不是删除。有没有办法删除矩形而不填充任何颜色?这是通过保留原始图像本身?

1 个答案:

答案 0 :(得分:1)

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

在你的情况下,听起来你需要一个布尔变量来控制绘制矩形的时间。也许是这样的:

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

    if (paintRectangle)
        // paint the rectangle
}

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