Hallo, ich habe gerade vermutlich einen blackout, aber nach 40 minuten im code und internet suchen , finde ich echt nichts 🤯.
repaint() wird bei dem Label augerufen, jedoch paintComponent(g1d) nicht:
Wo ist mein Fehler??
repaint() wird bei dem Label augerufen, jedoch paintComponent(g1d) nicht:
Java:
// JLabel object draw
draw = new JLabel() {
@Override
protected void paintComponent(Graphics g1d) {
super.paintComponent(g1d);
draw((SunGraphics2D) g1d);
System.out.println("painted!");
// wird nicht aufgerufen
}
@Override
public void repaint() {
super.repaint();
System.out.println("repainted draw!"); // wird immer aufegrufen
}
};
private void draw(SunGraphics2D g2) {
g2 = (SunGraphics2D) g2.create();
drawBackground(g2);
drawGames(g2);
g2.dispose();
// auch ohne create() und somit auch ohne dispose() klappt es nicht
}
private void drawGames(Graphics2D g2) {
for (Drawable drawable : games)
if (drawable != null)
drawable.draw(g2);
for (Drawable drawable : games)
if (drawable != null)
drawable.drawInfoText(g2);
// hier müssten keine Probleme sein: die gleichen methoden werden in anderen Klassen auch aufgerufen
}
private void drawBackground(SunGraphics2D g2) {
g2.setColor(Color.darkGray);
g2.fillRect(0, 0, getWidth(), getHeight());
}