Witam. Postanowiłem zrobić następującą rzecz. Tworzę sobie specjalną klasę DrawPanel. Klasa ta wygląda tak:
class DrawPanel extends JPanel {
private BufferedImage img;
private Graphics2D imgGraph;
public DrawPanel() {
super();
img = new BufferedImage(567, 571, BufferedImage.TYPE_INT_RGB);
imgGraph = img.createGraphics();
}
public void drawSth() {
imgGraph.setColor(Color.RED);
imgGraph.drawOval(150,50,120,50);
repaint();
}
public void clearImage() {
imgGraph.setColor(Color.WHITE);
imgGraph.fillRect(0,0,getWidth(),getHeight());
repaint();
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawImage(img, 0, 0, null);
}
}
W jaki sposób użyć metody clearImage() do przemalowania BufferedImage na biało (z domyślnego czarnego) w konstruktorze DrawPanelu? Próbowałem tak:
public DrawPanel() {
super();
img = new BufferedImage(567, 571, BufferedImage.TYPE_INT_RGB);
imgGraph = img.createGraphics();
clearImage();
}
Jednak to nie działa. Domyślam się, ze chodzi tu o to, że ten obiekt - DrawPanel musi być wcześniej stworzony by to wywołać i wyczyścić BufferedImage (Kiedy robię to z klasy zupełnie innej -> działa bez zarzutu.
Ja jednak chciałbym, aby stworzenie DrawPanelu wiązało się jednoznacznie ze stworzeniem JPanelu na którym jest rysowany biały BufferedImage.
W jaki sposób to najlepiej załatwić?
Z góry dzięki za odpowiedzi :)