2014-03-13 71 views
0

我有一个图像显示在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); 
    } 

代码它只是填充背景色,而不是removing.Is有什么办法去除矩形没有填写任何颜色的矩形?是通过保持原始图像本身?

+0

你在调用'getGraphics()'来绘制图像吗?如果是的话,你应该看看http://docs.oracle.com/javase/tutorial/uiswing/painting/ – Marco13

回答

1

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

就你而言,这听起来像是你需要一个布尔变量来控制矩形的绘制时间。也许是这样的:

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

    if (paintRectangle) 
     // paint the rectangle 
} 

现在在的ActionListener你只需设置paintRectangle变量在组件上虚假和调用重绘()。