# Teilweiseausgabe eines Vectors in eine TextArea



## nils-ahrens (21. Mrz 2005)

Hi{

Wie ist es möglich, von einem beliebig langem Vector, die z.B letzten dreißig Elemente so in einer TextArea auszugeben, dass das zuletzt hinzugefügte Element des Vectors an erster Stelle in der TextArea steht?

Die Ausgabe des ganzen Vectors habe ich so gemacht:

```
TextAera.setText(""+vector);
```
Das unpraktische bei dieser Darstellungsweise ist, wenn ich das zuletzt hinzugefügte Element dieses Vectors sehen möchte, ich immer scrollen muss.
Ich würde aber gerne, dass das aktuelle Element links erscheint.

Wer hat damit schon Erfahrung?

/*Ciao
Nils*/
}


----------



## Wildcard (21. Mrz 2005)

Entweder den Vector in umgekehrter Reihenfolge durchlafen, oder einen Stack verwenden.


----------



## nils-ahrens (21. Mrz 2005)

Hi Wildcard{

sorry, aber wie gebe ich einen Vector umgekehrt aus und was ist ein Stack?
Kannst Du mir vielleicht ein kleines Beispiel geben?

/*Ciao
Nils*/
}


----------



## Wildcard (21. Mrz 2005)

```
Vector v = new Vector();
for (int i=v.size()-1;i>=0;i--)
{
    System.out.println(v.get(i));
}
```
Ein Stack ist eine Collection die nach dem LIFO-Prinzip (Last In First Out) arbeitet.
Er liefert die Ergebnisse in umgekehrter Reihenfolge.


----------



## nils-ahrens (21. Mrz 2005)

OK{
aber wenn ich das in einer TextArea ausgebe, dann  wird in diesem Fall immer das erste Element überschrieben.
Da brauche ich unbedingt noch eine Lösung, da habe schon viel rumgebastelt.Eine allgemeine Lösung fand ich bisher nie. 

```
TexArea ausgabe=new TextArea();
Vector v = new Vector(); 
for (int i=v.size()-1;i>=0;i--) 
{ 
    ausgabe.setText(""+v.get(i)); 
}
```

Wie bekomme ich die Aufreihung jedes einzelnen Elements in einer TextArea mit setText hin?
Das muss doch auch mit einer Schleife möglich sein.

/*Ciao
Nils*/
}


----------



## Wildcard (21. Mrz 2005)

Das sie alle drinstehen?

```
TexArea ausgabe=new TextArea(); 
Vector v = new Vector(); 
for (int i=v.size()-1;i>=0;i--) 
{ 
    ausgabe.setText(ausgabe.getText()+v.get(i)); 
}
```


----------



## nils-ahrens (22. Mrz 2005)

{
durch das getText wird der Inhalt der TextArea nicht überschrieben.
Der Vector wird immer wieder hinten drangehängt. Und mit setText mault der Compiler!

/*Ciao
Nils*/
}


----------



## Guest (22. Mrz 2005)

Verwende StringBuffer, statt bei jedem Schleifendurchgang 
den ganzen Text immer wieder neu zu setzen.


----------



## Wildcard (22. Mrz 2005)

> Und mit setText mault der Compiler!


Ja, hab mir den cast gespart. Mir ist aber auch gerade eingefallen das TextArea ja auch append kann   

```
TexArea ausgabe=new TextArea(); 
Vector v = new Vector(); 
for (int i=v.size()-1;i>=0;i--) 
{ 
    ausgabe.append((String)v.get(i))); 
}
```


----------



## nils-ahrens (22. Mrz 2005)

{

Jetzt gibt er mir leider nichts mehr aus.
Mag er irgendetwas in der Forschleife nicht?

/*Ciao
Nils*/
}


----------



## Wildcard (22. Mrz 2005)

```
Vector v = new Vector();
        v.add("test1");
        v.add("test2");
        v.add("test3");
        v.add("test4");
        for (int i=v.size()-1;i>=0;i--) 
        { 
            ausgabe.append((String)v.get(i)); 
        }
```
Das hier funktioniert bei mir. Du machst irgendetwas falsch, und das kann ich ohne Code nicht sagen.


----------



## nils-ahrens (22. Mrz 2005)

{
vielen Dank erstmal.
Die wichtigsten Befehle konntest Du mir ja zeigen.
Ich probier morgen noch ein wenig aus.
Bist Du morgen Abend auch online?
... für eventuelle Rückfragen ?

/*Ciao
Nils*/
}


----------



## Wildcard (22. Mrz 2005)

Denke schon. Wenn nicht: PN


----------



## nils-ahrens (22. Mrz 2005)

{

jetzt ist mir ein Licht aufgegangen. Die Elemente in meinem Vector sind nur Integerwerte!
keine Strings.
Muss das umgewandelt werden, oder gibt es auch gleich was für Integerwerte?
Wie schaut das aus?

/*Ciao
Nils*/
}


----------



## Wildcard (22. Mrz 2005)

Caste auf Integer und ruf darauf toString() auf


----------



## mic_checker (22. Mrz 2005)

```
ausgabe.append(String.valueOf(v.get(i)));
```


----------



## Wildcard (22. Mrz 2005)

Stimmt! Das ist noch einfacher


----------



## nils-ahrens (22. Mrz 2005)

{

kannst Du mir noch ein Beispiel geben. Ich weiß nicht, wie ich das umsetzen soll.
 
/*Ciao
Nils*/
}


----------



## Wildcard (22. Mrz 2005)

```
TexArea ausgabe=new TextArea(); 
Vector v = new Vector(); 
for (int i=v.size()-1;i>=0;i--) 
{ 
    ausgabe.append(String.valueOf(v.get(i))); 
 
}
```
Wenn du die TextArea vorher noch leeren willst:

```
ausgabe.setText("");
```


----------



## mic_checker (22. Mrz 2005)

Btw. so müsste es mit Stack auch gehen:


```
Stack st = new Stack();
		
    	  Vector v = new Vector();
	     String str = " test1 ";	      
        v.add(str);        
        str = " test rt";        
        v.add(str);        
        str = " test 3";        
        v.add(str);        
        str = " test 4";        
        v.add(str);
        
        for(int i = 0;i < v.size();i++)
        		st.push(v.get(i));
	        
        for (int i=st.size()-1;i>=0;i--)
            ausgabe.append(String.valueOf(st.pop()));
```


----------



## nils-ahrens (22. Mrz 2005)

{

Jetzt klappt es!
Super Beiträge.
Vielen Dank
Wildcard und mic!

/*Ciao
Nils*/
}


----------



## Guest (22. Mrz 2005)

Yo, ich mach auch mit :bae:
	
	
	
	





```
StringBuffer buffer = new StringBuffer();
for(int i=v.size()-1, j=v.size()>30?v.size()-30:0;i>=j; i--)
  buffer.append(v.get(i)).append(" ");
textArea.setText(buffer.toString());
```


----------

