# \t in List-Objekt



## Mundschuk (10. Sep 2009)

Hallo zusammen,

ich möchte den Inhalt eines ResultSets in einem List-Objekt ausgeben.

Jetzt habe ich das eigentlich total dämliche Problem, dass die untereinander
stehenden Zeilen, die aus mehreren Spaltenwerten verkettet bestehen,
total verzogen sind.

Wenn ein Name kürzer ist als ein anderer stehen die logischerweise eben nicht
mehr untereinander.

Ich dachte, ich kann das mit einem + "\t\t" + beheben, aber statt eines
Tabulators bekomme ich dann nur ein Viereck ausgegeben... .

Kann mir jemand einen Tip geben, wie ich das trotzdem formatieren kann?


```
while(rsSelect.next()) {
						lsServer.add(rsSelect.getString("ServerName")
								+ "\t      " + rsSelect.getString("InternalIP")
								+ "\t          " + rsSelect.getString("Purpose")
						);
					}
```

Hier mal der Übeltäter ansich.

Danke und Grüße
Mundschuk


----------



## musiKk (10. Sep 2009)

Also das hängt ganz vom Ausgabemedium ab. Wenn das entsprechende Terminal (oder was auch immer) nicht mit Tabulatoren umgehen kann, dann wird es u. U. Ersatzzeichen anzeigen.

Eine Alternative ist String.format(). Die Formatanweisung [c]%10s[/c] etwa füllt von links mit Leerzeichen auf (mit -10 wird nach rechts aufgefüllt), bis die ganze Spalte zehn Zeichen lang ist.


----------



## Mundschuk (11. Sep 2009)

Hallo,

erstmal vielen Dank für den Hinweis.

Ich habe den Code jetzt entsprechend angepasst:


```
try {
					while(rsSelect.next()) {
						lsServer.add(String.format("%2s",rsSelect.getString("ServerName"))
								+ String.format("%10s",rsSelect.getString("InternalIP"))
								+ rsSelect.getString("Purpose")
						);
					}
				}
				catch(Exception ex) {
					ex.printStackTrace();
				}
```

Aber die "Spalten"-Werte stehen dann immer noch nicht wirklich untereinander. Bei variablen Servernamen verspults die Aufreihung


----------



## musiKk (11. Sep 2009)

Du musst natürlich vorher rausfinden, wie breit der breiteste Wert einer Spalte ist oder einen guten Maximalwert nehmen. Außerdem kannst Du alles gleich zusammen schreiben und musst die Strings nicht von Hand zusammenbauen:

```
lsServer.add(String.format("%2s | %10s | %s", rsSelect.getString("ServerName"), rsSelect.getString("InternalIP"), rsSelect.getString("Purpose"));
```


----------



## -MacNuke- (16. Sep 2009)

Ja, du musst dann vorher wissen, wie lang die Zeichenkette ist, wenn du solche Ausgabe undbegingt haben willst. Das würde z.B. mit:

SELECT MAX(LENGTH(ServerName)) FROM tabelle

gehen. Dann kriegst du den längsten Wert.


----------



## Marco13 (16. Sep 2009)

Die Frage war ganz ähnlich schonmal: http://www.java-forum.org/awt-swing-swt/86269-tabulatorenfunktion-einer-jlist.html


----------

