Guten Abend
Ich habe eine Klasse Draw welche von JPanel erbt.
Darin zeichne ich etwas in dem ich die Methode paintComponent überschreibe.
Ich möchte später im Programm, durch verschiedene Umstände ausgelöst (z.B. einen Mausklick), weitere grafische Elemente (Rechtecke, Kreise, Linien, usw.) einfügen können. Mein Problem ist dabei, dass ich alles was ich zeichne in der Methode paintComponent einbauen muss. Ich weiss aber nicht von Anfang an, was später alles gezeichnet werden muss.
Ich habe mir überlegt, dass ich eine innere Klasse Element (extends JPanel) bauen könnte die die Aufgabe hat jedes neues grafische Element zu beherbergen.
Mit Aufruf ihrer repaint-Methode könnte ich es zeichnen lassen.
Könnte dieser Ansatz funktionieren?
Nun tue ich mich schwer dem Konstruktor von Element ein gescheiter Parameter zu übergeben damit Element weiss was es ist (z.B. ein Rechteck, ein Kreis, eine Linie, usw.). Am liebsten würde ich ein Parameter eines übergeordneten Typs (Graphics?) übergeben. Die Klasse Element wüsste dann was zu zeichnen ist.
Kann ich das so generisch machen (man darf ja träumen) oder muss ich für jedes graphisches Element welches ich später hinzufügen will eine eigene Klasse bauen (eine für Rechtecke, eine für Kreise, eine für Linien, usw.)?
Danke und Gruss
Ich habe eine Klasse Draw welche von JPanel erbt.
Darin zeichne ich etwas in dem ich die Methode paintComponent überschreibe.
Ich möchte später im Programm, durch verschiedene Umstände ausgelöst (z.B. einen Mausklick), weitere grafische Elemente (Rechtecke, Kreise, Linien, usw.) einfügen können. Mein Problem ist dabei, dass ich alles was ich zeichne in der Methode paintComponent einbauen muss. Ich weiss aber nicht von Anfang an, was später alles gezeichnet werden muss.
Java:
public class Draw extends JPanel {
public Draw() {
setBounds(0,0,800,600);
Handler handler = new Handler();
this.addMouseListener(handler);
}
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.RED);
g.fillOval(300, 300, 200, 100);
repaint();
}
private class Handler implements MouseListener {
@Override
public void mouseClicked(MouseEvent e) {
// neues grafische Element hinzufügen (Rechteck, Kreis, Linie, usw.)
}
@Override
public void mouseEntered(MouseEvent arg0) {}
@Override
public void mouseExited(MouseEvent arg0) {}
@Override
public void mousePressed(MouseEvent arg0) {}
@Override
public void mouseReleased(MouseEvent arg0) {}
}
}
Ich habe mir überlegt, dass ich eine innere Klasse Element (extends JPanel) bauen könnte die die Aufgabe hat jedes neues grafische Element zu beherbergen.
Mit Aufruf ihrer repaint-Methode könnte ich es zeichnen lassen.
Könnte dieser Ansatz funktionieren?
Nun tue ich mich schwer dem Konstruktor von Element ein gescheiter Parameter zu übergeben damit Element weiss was es ist (z.B. ein Rechteck, ein Kreis, eine Linie, usw.). Am liebsten würde ich ein Parameter eines übergeordneten Typs (Graphics?) übergeben. Die Klasse Element wüsste dann was zu zeichnen ist.
Kann ich das so generisch machen (man darf ja träumen) oder muss ich für jedes graphisches Element welches ich später hinzufügen will eine eigene Klasse bauen (eine für Rechtecke, eine für Kreise, eine für Linien, usw.)?
Danke und Gruss