# Zeilenumbruch in MsgBox



## Shulyn (12. Aug 2009)

Morgen,

Kennt jemand evtl eine lösung für Zeilenumbrüche in einer MsgBox ?
ich habe es versucht, leider klappt es nicht so recht :/


```
StringBuffer s = new StringBuffer();
s.append("Could not save 'a long filename' ");
s.append(System.getProperty("line.separator"));
s.append("No data found in 'a long path' ");
MsgBox.show(s.toString(), 1);
```

Leider wird kein Zeilenumbruch gesetzt. Sondern die MsgBox wird immer breiter.

Shu!


----------



## max40 (12. Aug 2009)

Ich kann zwar gerade nix mit MsgBox anfangen, aber versuch mal mit HTML!


```
<html>line1<br>line2</html>
```


----------



## eRaaaa (12. Aug 2009)

weiss zwar auch nicht was MsgBox ist, aber was spricht denn gegen:


```
s.append("Could not save 'a long filename' ");
		s.append("\n");
		s.append("No data found in 'a long path' ");
```
 ?

oder gleich in den string:


```
s.append("Could not save 'a long filename' \n");
		s.append("No data found in 'a long path' ");
```


----------



## max40 (12. Aug 2009)

eRaaaa hat gesagt.:


> weiss zwar auch nicht was MsgBox ist, aber was spricht denn gegen:
> 
> 
> ```
> ...



\n ist nicht Plattformunabhängig! Da sollte man besser System.getProperty("line.separator") nehmen!


----------



## Shulyn (12. Aug 2009)

max40 hat gesagt.:


> Ich kann zwar gerade nix mit MsgBox anfangen, aber versuch mal mit HTML!
> 
> 
> ```
> ...



Das Funktionier :applaus:
Manchmal kommt man einfach nicht auf die einfachsten sachen.

Vielen Dank!


----------



## eRaaaa (12. Aug 2009)

trotzdem würde ich gerne wissen, wieso deine lösung nicht funktionierte ?! ???:L
an dem stringbuffer liegts doch nicht oder?! was macht denn msgbox ?


----------



## max40 (12. Aug 2009)

eRaaaa hat gesagt.:


> trotzdem würde ich gerne wissen, wieso deine lösung nicht funktionierte ?! ???:L
> an dem stringbuffer liegts doch nicht oder?! was macht denn msgbox ?


bestimmt enthält die MsgBox ein JLabel!
Und dort bekommt man keinen Zeilenumbruch mit dem line.separator hin!
Da verwendet man dann HTML!

How to Use HTML in Swing Components (The Java™ Tutorials > Creating a GUI with JFC/Swing > Using Swing Components)


----------



## Ebenius (12. Aug 2009)

max40 hat gesagt.:


> \n ist nicht Plattformunabhängig! Da sollte man besser System.getProperty("line.separator") nehmen!


In allen Swing-Komponenten ist [c]\n[/c] der Zeilenumbruch. [c]System.getProperty("line.separator")[/c] sollte man ausschließlich bei I/O verwenden.



max40 hat gesagt.:


> bestimmt enthält die MsgBox ein JLabel!
> Und dort bekommt man keinen Zeilenumbruch mit dem line.separator hin!
> Da verwendet man dann HTML!


Falls es sich um eine [c]JOptionPane[/c] handelt: Da gehen Zeilenumbrüche mit [c]\n[/c]. Genauso kann man ein Array von Zeilen als Message übergeben. HTML ist in dem Fall wesentlich teurer und liest sich schlechter im Quelltext. 

Ebenius


----------



## max40 (12. Aug 2009)

Ebenius hat gesagt.:


> In allen Swing-Komponenten ist [c]\n[/c] der Zeilenumbruch.



Dann bitte ich um ein Beispiel wie ich einen Zeilenumbruch im JLabel mache!


----------



## Verjigorm (12. Aug 2009)

max40 hat gesagt.:


> Dann bitte ich um ein Beispiel wie ich einen Zeilenumbruch im JLabel mache!



per HTML (gilt für eigentlich alle Komponenten)

```
new JLabel("<html>zeile1<br />zeile2</html>")
```

ungetestet, könnte Schreibfehler drin sein 

mfg Verjigorm


----------



## max40 (12. Aug 2009)

Verjigorm hat gesagt.:


> per HTML (gilt für eigentlich alle Komponenten)
> 
> ```
> new JLabel("<html>zeile1<br />zeile2</html>")
> ...




toll! das was wir oben schon geschrieben haben!
Ich will ein Beispiel mit \n im JLabel haben!


----------



## Ebenius (12. Aug 2009)

Du verstehst mich offensichtlich absichtlich falsch. Was ich sagen wollte, war, dass der System-Line-Separator nur  bei I/O benutzt wird. Nicht aber in Swing-Komponenten. Es versteht sich natürlich von selbst, dass dies nur mehrzeilige Textkomponenten betreffen kann, wie die JTextArea. Dort benutzt man [c]\n[/c] und nicht den Line-Separator.

Ebenius


----------



## max40 (12. Aug 2009)

Ebenius hat gesagt.:


> Du verstehst mich offensichtlich absichtlich falsch. Was ich sagen wollte, war, dass der System-Line-Separator nur  bei I/O benutzt wird. Nicht aber in Swing-Komponenten. Es versteht sich natürlich von selbst, dass dies nur mehrzeilige Textkomponenten betreffen kann, wie die JTextArea. Dort benutzt man [c]\n[/c] und nicht den Line-Separator.
> 
> Ebenius



Sorry, das war keine Absicht! Hatte es falsch gelesen/interpretiert!

Und das es sich von selbst versteht das es nur mehrzeiligen Textdokumenten betrifft, darüber kann man sich streiten!

Also bleibt es dabei das man für JLabel HTML verwendet um einen Zeilenumbruch zu machen?!


----------



## Ebenius (12. Aug 2009)

max40 hat gesagt.:


> Also bleibt es dabei das man für JLabel HTML verwendet um einen Zeilenumbruch zu machen?!


Jupp. Ansonsten müsste man ein eigens UI-Delegate für JLabel bauen.

Ebenius


----------

