我在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);
}
它只是用背景颜色填充矩形而不是删除。有没有办法删除矩形而不填充任何颜色?这是通过保留原始图像本身?
答案 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()。