2016-11-25 3 views
0

Ich habe JLabel, die einen dynamischen Text anzeigt. Dieser Text kann sehr lang oder kurz sein. Ich möchte Text umschließen und ich versuche es auf diese Weise:Wrap Text in einem JLabel

panel1.setLayout(new BoxLayout(panel1, BoxLayout.Y_AXIS)); 
    panel1.setMaximumSize(new Dimension(500, 150)); 
    .... 
    lblInfo=new JLabel(); 
    lblInfo.setText("<html><b>Q: "+ infoObj.getText()+"</b></html>"); 
    ... 
    panel1.add(lblInfo); 

Aber das scheint nicht zu funktionieren. Wenn ein langer Text kommt, verlässt dieses JLabel den Bildschirm (jenseits der Größe meines Panels) und ich kann nur das Ende davon sehen. Kann mir bitte jemand helfen, herauszufinden, worum es geht?

Ich habe einige Lösungen auf Stackoverflow mit JTextField anstelle von Label gefunden. Aber aufgrund einiger Anforderungen in meinem Projekt muss ich JLabel selbst in meinem Fall verwenden. Bitte hilf mir.

+1

Es ist notwendig, eine Breite als in [diese Antwort] gesehen (http://stackoverflow.com/a/7861833/418556). –

Antwort

3

Wenn ein langer Text kommt, das JLabel geht nur aus dem Bildschirm

Ja, wird der Text nur wickeln, wenn Sie ein <br> im eigentlichen Text haben. Die <br> am Anfang des Textes tut nichts.

fand ich einige Lösungen auf Stackoverflow JTextField statt Etikett mit

Das bezweifle ich. A JTextField zeigt IMMER Text in einer einzelnen Zeile an.

Der Vorschlag, den Sie im Forum finden, ist ein JTextArea mit Verpackung zu verwenden:

JTextArea textArea = new JTextArea(5, 20); 
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); 
textArea.setLineWrap(true); 
textArea.setWrapStyleWord(true); 
+0

* "Der Text wird nur dann umgebrochen, wenn Sie im Text einen '
' haben. Der '
' am Anfang des Textes tut nichts. "* 1) Das OP verwendet das Markup für fett, nicht break . 2) Break ist weder der einzige noch der beste Weg, HTML-Text zu umbrechen. (Eine CSS-Breite ist besser.) –

+0

@Andrew Ja, ich habe den Text fett gemacht. Wenn ich
hinzufügen soll, um Text in JLabel zu schreiben, muss ich es zwischen meinem dynamisch erhaltenen Text tun. Also, was ist die andere Option? Ich habe versucht, die Größe von JLabel einzustellen. Aber wenn der Text sehr lang ist, überläuft er einfach die Größe und wird nicht umgebrochen. – developer3

+0

* "Also, was ist die andere Option?" * Einstellen der Breite des Körpers des HTML mit CSS. Siehe ein Beispiel aus [diese Antwort] (http://stackoverflow.com/a/14011645/418556). –