我正在使用JPanel,并且当我点击面板时试图在上面画一些矩形。我点击后,我想要一个新的形状出现,但前一个要删除。我试过一些东西,但以前的形状不会被删除,我不知道为什么。Jpanel绘画未清除
public class Canvas extends JPanel {
private BufferedImage image = new BufferedImage(800, 600, BufferedImage.TYPE_INT_ARGB);
private Graphics2D graphics = image.createGraphics();
Canvas() {
addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent e) {
drawShapeAt(e.getX(), e.getY());
repaint();
}
});
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawImage(image,0,0,this);
}
public void drawShapeAt(int x, int y) {
graphics.setColor(Color.blue);
graphics.fill(new RegularPolygon(x, y, 100, 5));
}
}
我也把这个在我的JFrame。
Canvas mouse=new Canvas();
this.add(mouse, BorderLayout.CENTER);
mouse.drawShapeAt(250,250);
的形状很好地拉伸,该中心是我点击,但以前的没有得到removed..I认为,通过使用重绘()和super.paintComponent方法(G),他们将被删除,这就是我卡在哪里......
你正在'图像'本身上绘制的东西。该面板被清除,但图像上绘制的形状仍然存在。 – Titus
噢,我明白了。那么你有什么想法如何清除图像? LE:明白了,您必须使用clearRect() – Gimv30
您可以用一种颜色(透明度)填充整个图像。 – Titus