我有一个JPanel,它可以绘制.png图像。每个图像都有2个副本来表示它是否被选中。一个图像是正常的,一个图像有一个彩色边框来表示已经做出选择。 (您可以将这些图像视为简单的形状以便参数)paintComponent()在重绘后留下先前绘制的图像()
通过MouseListeners确定要绘制的图像版本。如果用户选择image1,则image1将显示其高亮版本。
一般来说,这是工作,但是在repaint()后,图像的突出显示版本被留下。由于突出显示的版本比正常版本稍大,因此您可以看到它突出显示在新绘制的正常图像后面(重叠)。
我以为repaint()应该完全处置当前的图纸,并从头开始,这似乎并不是这种情况。下面是一般想法,blackClicked在MouseListener内切换。
所以我的问题是我如何使重绘()摆脱它目前绘制的图像,并从头开始。
此外,如果有一个更简单的方法来实现所有这些,请让我知道,制作2副本的图像是一件繁琐的工作。
@Override
public void paintComponent(Graphics g){
Graphics2D g2 = (Graphics2D) g;
if(blackClicked)
g2.drawImage(blackSelected,0, 0, null);
else
g2.drawImage(black,0, 0, null);
g2.drawImage(green,0, 0, null);
}
不错!爱得简单修复。 – Koop 2010-11-03 07:33:11