Swing HTML in JLabels

bene2808

Aktives Mitglied
Hallo Forum,

ich experimentiere gerade mit HTML in einem JLabel herum und bin auf zwei Probleme gestoßen:

1. Wenn ich die Größe des JLabels absolut festsetze und der Inhalt kleiner ist als der gesamte Platz, wird er trotz eventueller "width: 100%"-Angaben nicht vergrößert. Es sieht so aus, als würde automatisch der minimale Platz berechnet, den der HTML-Text benötigt und dieser dann innerhalb des JLabels angezeigt. Was mache ich jetzt, wenn ich beispielsweise eine Tabelle über die gesamte Breite des JLabels haben möchte?😵

2. Manchmal reicht der Platz für den Text in einer Zeile nicht aus, auch dann wenn er keine Leerschritte enthält. In diesem Fall müsste also ein einzelnes Wort umgebrochen werden. "word-wrap: 'break-word'" bzw. "word-wrap: 'break-all'" funktioniert aber nicht; stattdessen bleibt das JLabel einzeilig und wird über die von mir mit setSize(), setPreferredSize() und setMaximumSize() gesetzten Grenzen hinaus angezeigt!😕

Dankeschön für jede Idee🙂
 
Code:
JFrame frame = new JFrame("LabelTest");
Container content = frame.getContentPane();
content.setLayout(new BorderLayout());
JLabel label = new JLabel("<html><table width=100%><tr><td>Überschrift1</td><td>Überschrift2</td></tr><tr><td>Information1</td><td>Information2</td></tr></html>");
content.add(label, BorderLayout.CENTER);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);

Sorry, ich denke jedes Mal auf's neue, ich würd's ohne Code auch erklären können...😕
Also trotz 100% width wird die Tabelle nicht vergrößert, wenn man das Fenster vergrößert, und das obwohl sich das Label an sich schon vergrößert...🙁
 
Code:
     Timer t = new Timer(10, new ActionListener() {
          
            @Override
            public void actionPerformed(ActionEvent e) {
              
                 int width  = content.getWidth();
                 int height= content.getHeight();
                System.out.println(height+" and "+width);
                label.setBounds(0, 0, width, height);
              
              
            }
        });
         t.start();

So habe ich sichergestellt, dass das Label sich anpasst. Doch der Inhalt des Labels hat sich in der Größe nicht verändert.
Der Fehler muss dann wohl im HTML liegen :/ Da kann ich dir auch nicht weiterhelfen.
 
Arrrgh schade... 🙁
Schaut einfach bissle unschön aus, wenn man's mit anderen Komponenten kombiniert, die über die ganze Breite gehen...

Aber danke🙂
 
Also hier noch mal zum zweiten Problem: Ich habe eine Art Dateikomponente programmiert und der Name der Datei oder des Ordners soll unter dem Bild angezeigt werden. Das geht auch dann noch, wenn der Text zu lang ist, aber genug Leerschritte enthält. Wenn allerdings ein Wort zu lang für eine Zeile ist, geht der Text über die Ränder hinaus.

Hat irgendjemand eine Idee?🙂

Zeilenumbruch in HTML.png
 

Neue Themen


Zurück
Oben