|
|
Bchle123
|
| Titel: Oberfläche aktualisieren |
28.09.2011 19:52 |
|
|
Anmeldungsdatum: 22.07.2010
Beiträge: 7
|
hallo leute, Ich habe ein Problem mit meiner Javaanwendung. Ich habe eine Oberfläche, die ein JComponent enthält. Auf diesem möchte ich gerne Punkte nacheinander einfügen. Sobald ich jedoch einen neuen Punkt einfüge, wird der alte Punkt nicht mehr angezeigt.
Zitat: public static void zeichneAlleKomponenten() { for (Knoten kn :vorhandeneKnoten) { zf.zeichneKnoten(kn.gibXKoordinate(),kn.gibYKoordinate(),kn.gibKnotenfarbe()); } } Die Methode zeichneAlleKomponenten soll alle Kreise aus der ArrayList vorhandeneKnoten zeichnen.
Zitat: public void zeichneKnoten(int x, int y, Color farbeDesKnotens) { Ellipse2D.Double circle = new Ellipse2D.Double(x, y, 15, 15); setColor(farbeDesKnotens); setShape(circle); repaint(); } Diese Methode zeichnet jeweils den einzelnen Kreis.
Zitat: protected void paintComponent (Graphics g) { super.paintComponent(g); if(shape!=null && c!=null) { Graphics2D graphics2D = (Graphics2D) g; graphics2D.setColor(c); //graphics2D.draw(shape); graphics2D.fill(shape); } } Das ist noch meine überschriebene paintComponent- Methode. Ich hab schon viele unterschiedliche Dinge ausprobiert, jedoch finde ich keine Lösung. Kann mir vielleicht jemand helfen?
[Zuletzt bearbeitet: 28.09.2011 19:55]
|
 |
|
| |
|
MadBonsaiJr
|
| Titel: Oberfläche aktualisieren |
17.11.2011 20:49 |
|
|
Anmeldungsdatum: 26.08.2009
Beiträge: 791
 |
Tutorial Autor (?) |
|
Ich gebe zu, dass ich mich mit dem Stoff noch nich auseinandergesetzt habe, aber kann man nicht einfach 2 Punkte schreiben, von denen der eine den "verloren gegangenen" ersetzt? *duck*
________________________________________ Pc: http://www.sysprofile.de/id146539 Phobie vor langen Wörtern: Hippopotomonstrosesquippedaliophobie
|
 |
|
| |
|
applecake
|
| Titel: Oberfläche aktualisieren |
18.11.2011 11:03 |
|
|
Anmeldungsdatum: 13.07.2011
Beiträge: 29
|
Deine Knoten werden alle gezeichnet. Allerdings hast du ein Verständnisproblem. paintComponent() "leert" zuerst die Komponente und zeichnet diese dann anschließend neu. In deinem Fall zeichnet sie dann das Objekt "shape". Du rufst die paintComponent-Methode für jeden Punkt auf, und überschreibst jedes mal das zu zeichnende Shape. Du verstehst was ich meine? Also du zeichnest jeden einzelnen Punkt, aber überzeichnest das gezeichnete wieder mit dem nächsten Punkt, und so bleibt dir nur der letzte Punkt erhalten.
Ich würde vorschlagen du implementierst in die Knoten-Klasse eine Methode drawObject(Graphics g) die deine Punkte zeichnet und holst dir das Graphics-Objekt von deiner Komponente.
lg
________________________________________ http://www.sysprofile.de/id160900
|
 |
|
| |
|
|
|
|
|
|