Löschen von Elementen aus einer Arrayliste

wirlefir

Grünschnabel
Kurz zur Schilderung meines Problems.
Wir sollen ein Programm erstellen, welches einen WMS-Request in eine Zeichenfläche läd.
In dieser Zeichenflächen sollen die abgebildeten Gebäude aus dem Request digitalisiert werden und dann die Koordinaten der Gebäudeecken in Gauß-Krügerkootinaten abgespeichert werden.
Mein problem ist nun, dass ich zwar Gebäude digitalisieren kann, aber bei jedem neuen Gebäude fängt das Programm für einen neuen Anfangspunkt wieder beim letzten Punkt des vorherigen Gebäudes an. Es wird also nicht die Punktliste vom vorherigen geleert.
Ich weiß nicht genau, wie ich das realisieren kann.:(:(:(

Vielen Dank
Gruß wirlefir
 
Zuletzt bearbeitet:
Ja, aber wen ich "clear" werwende sind alle Daten aus der Liste weg, die Gebäude habe ja eine Adresse und die Koordinaten, die ich dann in einer Datei ausgeben will.
Ich will also mehrere Gebäude digitalisieren. Nach dem neuen Befehl "Digitalisieren" soll eben dann ein neues Gebäude gezeichnet und erzeugt werden, dessen Daten sich dann auch wieder abspeichern lassen.
Diese daten kommen sicher erst einmal in einen Zwischenspeicher und werden dann nach dem Befehl "Speichern" in eine Datei ausgelesen.

Gruß wirlefir
 
Sorry aber ich versteh dein problem nicht. Das Zeichnen hat doch erstmal grundsätzlich nichts mit der ArrayList zu tun. Wenn er von einem Punkt zeichnet, den du nicht willst, ist deine Zeichenlogik fehlerhaft.
Du wolltest aus der ArrayList Elemente löschen und dies macht man mit den beiden genannten Befehlen.
 
Ja, ich denke das irgendwas beim zeichnen nicht richtig ist. Die Punkte für das jeweilige Gebäude müssen doch auch in einer Liste gespeichert werden (oder?),
die man dann wier leert um eben ein neues Gebäude zu zeichnen

Gruß Sina
 
Ich weiß nicht wied dein Sourcecode aussieht, dementsprechend weiß ich auch nicht wie genau du zeichnest und wo der Fehler liegt. Wie man immer so schön sagt..ich habe keine Glaskugel zur Hand ;)

Also wenn du eine Logik hast und diese verbessert/korrigiert haben möchtest, solltest du den entsprechenden Codeausschnitt posten.
 
Benutze eine Liste von Listen

Du hast eine ArrayList in der Du die Punkte des Objektes speicherst. Und pro Gebäude hast Du eine dieser ArrayList, welche sich alle in einer übergeordneten Liste kapseln. Das hat den Vorteil, dass Du alle Objekte einzeln oder gesammelt verwalten kannst -- je nachdem was Du brauchst. Der Verwaltungsaufwand ist zwar etwas größer dafür ist die Struktur aber wesentlich sauberer.
 
Also hier mal der Quellcode

digit_j.addMouseListener(new MouseAdapter(){
public void mousePressed(MouseEvent me){
g = (Graphics2D) ausgabe.getGraphics();
g.setColor(Color.GREEN);


String sname = JOptionPane.showInputDialog("Straßenname eingeben!");
String hnr = JOptionPane.showInputDialog("Hausnummer eingeben!");

geb = new Gebaeude();
geb.setStrasse(sname);
geb.setHNr(hnr);
gebliste.add(geb);
geb_ch.addItem(geb.getGeb());
geb_ch.removeAllItems();
ausgabe.update(g);

if(gebliste.isEmpty()){
JOptionPane.showMessageDialog(getParent(), "Es wurde kein Gebäude ausgewählt", "Fehler",
JOptionPane.ERROR_MESSAGE);
}
else{
for (int i = 0; i < gebliste.size(); i ++){
geb_ch.addItem(i+ ": "+ gebliste.get(i).getGeb());
g.fillPolygon(gebliste.get(i));
}
geb_ch.setSelectedIndex(gebliste.size()-1);

geb = new Gebaeude();
x1=-1;
y1=-1;
}
}
}
);
 
Zurück