# ArrayList ausgabe



## Horschdt (28. Januar 2008)

Hohe,

ich hab eine ArrayList<Point> , in diese werden Points geschrieben und in einem mouseEvent mit text darunter ausgegeben. Das funktiniert beim ersten Durchlauf auch Wunderbar, nur wenn ich einen zweites mal (andere) Punkte ausgeben will gibt er mir diese doppelt, bei dem dritten mal dreifach

hier meine methode:

```
public void schreibe() {
		
		try {
			 BufferedWriter bufout = new BufferedWriter ( new FileWriter ("I:/Test.txt", true) );
			 int i = 0;		
			 bufout.newLine();
			 while (  i < polygons.size()) {
					double xkoo = (polygons.get(i).getX());
					double ykoo = (polygons.get(i).getY());
			
			 bufout.write("Punkt "+ i);
			 bufout.newLine();
			 bufout.write("X Koo: ");
			 bufout.write(String.valueOf(xkoo));
			 bufout.newLine();
			 bufout.write("Y Koo: ");
			 bufout.write(String.valueOf(ykoo));
			 bufout.newLine();
			 bufout.newLine();
			 i++;
			 }
			 bufout.write("Strasse: "+ Strasse);
			 bufout.write("   Hausnummer: "+ Hausnummer);
			 bufout.newLine();
			 bufout.close();
			 polygons.clear();  
			 
		} catch (IOException e) {
			// TODO Automatisch erstellter Catch-Block
			e.printStackTrace();
		} 
		
	}
```

sie wird nur einmal ausgeführt wenn ich den entsprechenden Knopf drücke, zumindest hoffe ich das...      Die Zeile polygons.clear(); ist auch nur ein Versuch gewesen die Liste nach einem Durchlauf zu leeren, funktioniert aber nicht.

Weis jemand wo da der Wurm sein könnte?

mfg,
Alex


----------



## The_Answer1985 (28. Januar 2008)

Wahrscheinlich werden deine Werte jedes Mal in die ArrayList neu gespeichert. Das würde dann ja bei jedem Button-Klick passieren.

Wenn du das umgehen möchtest und nur willst, dass die Werte drin stehen, die durch das Button Event ausgelöst werden, musst du die ArrayList leeren.

Das machst du dann am besten im gleichen Schritt, in dem du die Daten in die Liste einfügst:


```
// Liste mit Werten befüllen

// leert die Liste
arrayliste.clear();

// Liste befüllen
arrayliste.add(point);
...
```

HTH

EDIT: Sorry, hing gerade am Telefon und hab eben gelesen, dass du das schon versucht hast.


----------



## Horschdt (28. Januar 2008)

oki, dein Einwand hat mich trotzdem darauf gebracht, dass man doch mal versuchen könnte die einzelnen Elemente nach Bearbeitung aus dem Array zu entfernen, zumindest is jetzt nichts mehr doppelt, er vergisst nur einen Punkt..

polygons.remove(i);

edit, er vergisst jeden 2ten Punkt mit in die txt zu schreiben..  auch nicht besser als alle doppelt.


edir2:  eine Nacht drüber schlafen und schon sieht man, dass ich Depp die methode bei jedem mal klicken erneut ausführe..   er legt da also mehrere Listener 'übereinander' ..    ich hab jetzt den Button ausgeblendet damit den ben nur einmal drücken kann, aber wie kann ich eine methode ganz einfach beenden?


----------



## The_Answer1985 (29. Januar 2008)

Horschdt hat gesagt.:


> aber wie kann ich eine methode ganz einfach beenden?



Verstehe ich nicht ganz, sorry 

Also das Problem war, das in der Methode der Listener implementiert ist und dieser bei jedem Klick erneut aufgerufen wurde.

Und was meinst du jetzt genau mit Methode beenden?

Eine Methode geht ja de facto so lange, wie du Anweisungen reinpackst...

MfG


----------

