JOptionPane.showMessageDialog mit automatischem Zeilenumbruch

  • Themenstarter Themenstarter oiuoiuoiuoiuoiu
  • Beginndatum Beginndatum
O

oiuoiuoiuoiuoiu

Gast
Hallo!

Mit
Java:
JOptionPane.showMessageDialog(this, text);
lasse ich mir Fehlermeldungen grafisch ausgeben. Es wäre gut wenn dabei längerer Text automatisch umgebrochen wird. Ist das möglich oder muss ich mir da was eigenes programmieren?
 
Hallo!

Mit
Java:
JOptionPane.showMessageDialog(this, text);
lasse ich mir Fehlermeldungen grafisch ausgeben. Es wäre gut wenn dabei längerer Text automatisch umgebrochen wird. Ist das möglich oder muss ich mir da was eigenes programmieren?

mm die Frage ist woher soll die Box das wissen, wann du nen Umbruch haben willst?
du kannst in deinen Text einfach ein \n reinsetzen da wird dann umgebrochen,...

geht natürlich nur, wenn du den Text vorher festlegst 😀
 
Zuletzt bearbeitet:
mm die Frage ist woher soll die Box das wissen, wann du nen Umbruch haben willst?
Mein Bildschirm wär z.B. ne gute Grenze 😉 Aber jede andere maximale Breite wär auch in Ordnung, nur jetzt kommen teilweise so breite Fenster raus, dass man erstmal an ihnen ziehen muss, um überhaupt den OK-Knopf zu sehen.

du kannst in deinen Text einfach ein \n reinsetzen da wird dann umgebrochen,...

geht natürlich nur, wenn du den Text vorher festlegst 😀
Das geht leider nicht, da der Text nicht von mir kommt 🙁
 
Mein Bildschirm wär z.B. ne gute Grenze 😉 Aber jede andere maximale Breite wär auch in Ordnung, nur jetzt kommen teilweise so breite Fenster raus, dass man erstmal an ihnen ziehen muss, um überhaupt den OK-Knopf zu sehen.


Das geht leider nicht, da der Text nicht von mir kommt 🙁

dann könntest du evtl. ne Methode schreiben, die den Text alle z.b. 20 Zeichen nach ner Lücke also indexof(" ") untersucht und dann nen "\n" einfügt,... wäre jetzt für mich die einfachste Lösung vll. nicht die Beste^^
 
Denke auch, dass du das manuell machen musst. Ich mache die Umbrüche per HTML. Allerdings sind das Texte welche aus den Übersetzungsdateien vorgegeben werden. Da haben wir uns geeinigt per HTML zu formattieren (Umbrüche fett ect.). Das macht bei uns eine andere Abteilung.
 
Hab mir mal was ähnliches geschrieben:
Java:
public void showError(String s)
	{
		StringBuffer sb=new StringBuffer();
		String[] words=s.split(" ");
		int i=0;
		int rowLength=0;
		while(i<words.length)
		{
			if(rowLength>50)
			{
				sb.append("\n");
				rowLength=0;
			}
			rowLength=rowLength+words[i].length()+1;
			sb.append(words[i]).append(" ");
			i++;
		}
		
			JOptionPane.showMessageDialog(this,
			   sb.toString(),
			   "Fehler",
			   JOptionPane.ERROR_MESSAGE);
	}
 
Danke bERt0r. Habe das ganze mal noch ergänzt so dass explizite Zeilenumbrüche bedacht werden:

Java:
	public static void showError(String s)
	{
		StringBuilder sb = new StringBuilder();
		String[] lines = s.split("\n");
		for (String line : lines) {
			String[] words = line.split(" ");
			int i = 0;
			int rowLength = 0;
			while (i < words.length)
			{
				if (rowLength > 50)
				{
					sb.append("\n");
					rowLength = 0;
				}
				rowLength = rowLength + words[i].length() + 1;
				sb.append(words[i]).append(" ");
				i++;
			}
			sb.append("\n");
		}
		JOptionPane.showMessageDialog(null, sb.toString(), "Fehler", JOptionPane.ERROR_MESSAGE);
	}
 
Der Vollständigkeit halber:
Du kannst einer JOptionPane auch eine JTextArea geben, die den Zeilenumbruch für dich handhaben kann. Könnte in etwa so aussehen:

Java:
public void showMessageBox(String msg) {
    final JTextArea textBox = new JTextArea(msg, 10, 30);
    textBox.setBorder(null);
    textBox.setEditable(false);
    textBox.setLineWrap(true);
    // ggfs weitere einstellungen

    JOptionPane.showMessageDialog(null, textBox);
}
 
Da wird unter Umständen aber auch innerhalb des Wortes umgebrochen. Zudem sieht eine TextArea im Dialog nicht gerade schön aus. Man müsste diesen dann Optisch noch so anpassen, dass er wie ein Label aussieht. Zudem sind die Scrollbalken in einem Dialog sicher auch unerwünscht.

Der TO kann sich natürlich eine spezielle Klasse schreiben welche z.B. von JTextArea erbt un diese nach den benötigten Kriterien modifiziert.
 

Neue Themen


Zurück
Oben