使用此代码我试图首先创建一个bufferedimage作为我的画布,我将绘制一些东西,然后我想将每个图像保存到一个链表。但是,当我使用我的工具绘制一些东西时,这个方法重写了两次。此外,我完全不理解这种覆盖背后的逻辑。
`
public void paintComponent(Graphics g) {
super.paintComponent(g);
if (image != null) {
g2d = image.createGraphics();
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
setBackground(backgroundColor);
list.add(image);
list.remove(list.size()-1);
g.drawImage(list.get(list.size()-1), 0, 0, this);
g2d.dispose();
// a();
} else{
image = new BufferedImage(1920,1080,BufferedImage.TYPE_INT_ARGB);
System.out.println("XXXXXXX");
list.add(image);
g.drawImage(list.get(0), 0, 0, null);
list.remove(0);
}
}
public void addLabel(JLabel label){
add(label);
repaint();
}
public void setBackgroundColor(Color color){
backgroundColor=color;
repaint();
}
public void undo(){
}
public void clear(){
image = new BufferedImage(1920, 1080, BufferedImage.TYPE_INT_ARGB);
g2d = image.createGraphics();
g2d.setPaint(backgroundColor);
list.remove(list);
list.add(image);
g2d.drawImage(image,0,0,null);
g2d.setPaint(backgroundColor);
repaint();
}
public void clearLast(){
if(!list.isEmpty()){
g2d = image.createGraphics();
g2d.drawImage(list.get(list.size()-1), 0, 0, null);
repaint();
}
}`