tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
5
ZUGRIFFE
392
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    chrootdev chrootdev ist offline Mitglied
    Registriert seit
    Feb 2008
    Beiträge
    15
    Hallo,

    ich habe hier ein JLabel, in welchem ein Text steht zwischen html-Tags, damit der Text automatisch umgebrochen wird.

    Der IST-Zustand ist folgender:

    Ein JPanel, welches ein GridBagLayout hat, auf diesem sind mehrere JLabels + JTextFields.

    Das Problem:

    Der Text auf den JLabels wird in mehreren Sprachen dargestellt, jetzt kann es sein, das der Text auf Deutsch sich in einer Zeile ausgeht, aber auf Englisch oder Spanisch nicht. Wenn er sich nicht ausgeht, dann wird umgebrochen. Die Höhe des JLabels wird dabei aber nicht verändert, sondern die untere Hälfte des Textes einfach abgeschnitten.

    Kann ich dem Label oder dem Layout irgendwie klar machen, das das Label in so einem Fall vergrößert werden soll?

    Danke!
     
    mfg chrootdev
    ------------------------------
    Java, C++, Linux

  2. #2
    SE Tutorials.de Gastzugang
    Ich denke mal das hat was mit der JTable zu tun das du in dieser eine feste Zellen-Größe definiert hast. Dann nützt dir auch kein HTML was. Erstmal musst du für sorgen das sich die Zellen auch frei in ihrer Größe ändern können bevor du ihnen sagst das sie es tun sollen.

    Außerdem finde ich hier eines SEHR merkwürdig :
    Mehrere JTable in einem GridBagLayout ?
    Entschuldige meine verdrusste Antwort , aber das ist völliger schwachsinn. Entweder baust du eine große JTable die du z.B. über ein BorderLayout zentrierst *oder entsprechend ausrichtest* oder du nimmst das GridBagLayout mit dem mit einegem Mehraufwand das selbe erreichen kannst. Beides in einander zu verschachteln könnte unter anderen ebenfalls das Problem hervorrufen.
     

  3. #3
    chrootdev chrootdev ist offline Mitglied
    Registriert seit
    Feb 2008
    Beiträge
    15
    Danke SpiKEe für deine antwort!

    Aber was hat mein Label-Problem mit JTables zu tun?
     
    mfg chrootdev
    ------------------------------
    Java, C++, Linux

  4. #4
    Technoblade Technoblade ist offline Mitglied Gold
    Registriert seit
    Feb 2009
    Beiträge
    193
    Ich vermute mal, dass er aus JLabel JTable gelesen hat
    Naja, wenn du die Höhe ändern willst musst du mit den GridBagConstrainst arbeiten.
    In Java-Doku zum GridBagLayout findet sich dazu auch ein Beispiel. Hier ist der Link zu der entsprechenden Seite der Doku. Das Beispel findest gegen Ende des längeren Texts zu Anfang der Seite. Also noch vor den Konstruktoren etc.
     

  5. #5
    chrootdev chrootdev ist offline Mitglied
    Registriert seit
    Feb 2008
    Beiträge
    15
    Mittlerweile bin ich darauf gekommen, das das Problem eher die JScrollPane ist, bzw. die Kombination von JLabel mit HTML-Text und JScrollPane.

    Das Beispiel zeigt mein Problem. Ich habe 20 mal die Kombination von JLabel (mit HTML-Text) und JTextField. Jetzt werden die Labels im GridBagLayout in der JScrollPane nicht komplett ausgebreitet.

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    
    import java.awt.Dimension;
    import java.awt.GridBagConstraints;
    import java.awt.GridBagLayout;
     
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.JTextField;
     
     
    public class LayoutTest extends JFrame
    {
        
        /**
         * 
         */
        private static final long   serialVersionUID    = 6971964679396619736L;
     
        public LayoutTest()
        {
            setSize(new Dimension(500, 500));
            setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
            
            JScrollPane scrollPane = new JScrollPane();
            scrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
            scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
            
            JPanel panel = new JPanel();
            panel.setLayout(new GridBagLayout());
            
            for(int i=0;i<20;i++)
            {
                GridBagConstraints labelConstraints = new GridBagConstraints();
                labelConstraints.gridx = 0;
                labelConstraints.gridy = i;
                labelConstraints.weightx = 1.0d;
                labelConstraints.weighty = 1.0d;
                labelConstraints.fill = GridBagConstraints.BOTH;
                
                JLabel lbl = new JLabel("<html>Specify the row and column at the upper left of the component. The leftmost column has address gridx=0 and the top row has address gridy=0. Use GridBagConstraints.RELATIVE (the default value) to specify that the component be placed just to the right of (for gridx) or just below (for gridy) the component that was added to the container just before this component was added. We recommend specifying the gridx and gridy values for each component rather than just using GridBagConstraints.RELATIVE; this tends to result in more predictable layouts.</html>");
                lbl.setMinimumSize(new Dimension(250,25));
                lbl.setPreferredSize(new Dimension(250, 25));
                panel.add(lbl, labelConstraints);
                
                GridBagConstraints txtConstraints = new GridBagConstraints();
                txtConstraints.gridx = 1;
                txtConstraints.gridy = i;
                txtConstraints.weightx = 0.4d;
                txtConstraints.weighty = 0.0d;
                txtConstraints.fill = GridBagConstraints.NONE;
                
                JTextField txtField = new JTextField();
                txtField.setMinimumSize(new Dimension(100, 25));
                txtField.setPreferredSize(new Dimension(100, 25));
                txtField.setMaximumSize(new Dimension(100, 25));
                
                panel.add(txtField, txtConstraints);
            }
        
            scrollPane.setViewportView(panel);
            
            setContentPane(scrollPane);
            
            setVisible(true);
        }
        
        /**
         * @param args
         */
        public static void main(String[] args)
        {
            new LayoutTest();
        }
    }

    Gibt es eine Möglichkeit, das sich die JLabel in ihrer ganzen höhe entfalten?
     
    mfg chrootdev
    ------------------------------
    Java, C++, Linux

  6. #6
    SE Tutorials.de Gastzugang
    Ouh ... SORRY
    mein Fehler ... wie bin ich da von JLabel auf JTable gekommen ? ... ouh .. ganz großes Damentennis

    Ok .. zurück zum Thema ... *das oben könnten wir streichen*

    Das Problem mit JScrollPane ist das es versucht alle Components die innerhalb seines Viewports liegen möglichst klein zu kriegen. Dagegen kann man soweit ich weis nur eines machen das man die aktuelle Größe ermittelt .. diese als preferredSize setzt und DANN erst den Viewport setzt. Zumnidest hat das bei meinen Apps immer funktioniert. Wenn das nicht hilft müsste ich mich noch mal intensiv mit GUI beschäftigen *ist schon etwas länger her*
     

Ähnliche Themen

  1. JLabel - Text Abstand
    Von iflow im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 0
    Letzter Beitrag: 09.03.08, 17:01
  2. JLabel text zentrieren
    Von Shizzl_chrizzl im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 1
    Letzter Beitrag: 05.05.06, 14:25
  3. Jlabel Text mit Tabulator
    Von bl4ck29 im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 7
    Letzter Beitrag: 22.09.05, 14:32
  4. Text vom JLabel holen
    Von jorgeHX im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 2
    Letzter Beitrag: 02.07.04, 00:22
  5. GUI :: Listbox mit Bildern und mehrzeiligem Text
    Von EngelchenB im Forum Visual Basic 6.0
    Antworten: 2
    Letzter Beitrag: 18.02.04, 17:06

Stichworte