tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
1
ZUGRIFFE
741
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von the_skywalker
    the_skywalker the_skywalker ist offline Mitglied Bronze
    Registriert seit
    Jan 2005
    Ort
    Arnstadt (Thüringen)
    Beiträge
    41
    Hallöchen,

    ich habe vor einiger Zeit ein paar Programme geschrieben und dabei keinen "richtigen" Layout-Manager verwendet, habe das null-Layout verwendet. Mir waren die verschieden Layout-Manager irgendwie zu kompliziert. Jetzt allerdings will ich meine Programme ändern. Welcher Layout-Manager ist denn am besten geeignet? Ich erzeuge ein JPanel mit mehereren untereinanderliegenden Textfelder und jeweils ein Label davor.
    Das null-Layout war davür optimal, doch die Programme sollen auf verschieden PC's laufen und da jeder eine andere Auflösung hat und die Bildschirme unterschiedlich groß sind, passen die Frames nicht immer darauf. Und ein null-Layout scrollbar zu machen funktioniert irgendwie auch nicht, oder doch?

    Also welcher Layout-Manager ist der "beste" und wie kann ich den verwenden?

    MfG

    Stefan (Luke)
     

  2. #2
    Registriert seit
    Apr 2002
    Ort
    HH
    Beiträge
    3.224
    Für den Fall scheint mir das GridLayout geeignet, alternativ auch das flexiblere GridBagLayout.
    Das Beispiel in der API-Doku sollte eigentlich ausreichen. Dazu ein ScrollPane bzw. JScrollPane und Du hast auch Bildlaufleisten..

    Es gibt nicht "den Besten" LayoutManager, jeder hat seine Anwendungsfälle.

    Beispiel:
    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
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    
    package gridBagLayoutSample;
     
    import java.awt.BorderLayout;
    import java.awt.GridBagConstraints;
    import java.awt.GridBagLayout;
    import java.awt.Insets;
     
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.JTextField;
     
    /**
     * @author Hans Peter von Welt
     */
    public class GridBagFrame extends JFrame {
     
        public GridBagFrame() {
            super("GridBagFrame");
            //Panel als Container
            JPanel p = new JPanel();
            //Panel in ScrollPane
            JScrollPane sP = new JScrollPane(p);
     
            //GridBagLayout vorbereiten und dem Panel zuführen
            GridBagLayout gBL = new GridBagLayout();
            GridBagConstraints gBC = new GridBagConstraints();
            p.setLayout(gBL);
     
            //Label und Textfeld deklarieren
            JLabel l;
            JTextField tF;
     
            //Wenn Element kleiner als Zelle, linksbündig
            gBC.anchor = GridBagConstraints.WEST;
     
            //200 Label und Textfelder als Beispiel erzeugen
            for (int i = 0; i < 200; i++) {
                //Label linksbündig
                l = new JLabel("Label " + i);
                //nicht skalieren
                gBC.fill = GridBagConstraints.NONE;
                //Nimm so wenig Platz, wie Du benötigst
                gBC.weightx = 0.0;
                //Zeile mit 2 Zellen
                gBC.gridwidth = 2;
                //Innenabstand der Label-Zelle
                gBC.insets = new Insets(1, 4, 1, 4);
                gBL.setConstraints(l, gBC);
                p.add(l);
     
                //Textfeld rechtsbündig, skalierend
                tF = new JTextField();
                //Horizontal skalierend
                gBC.fill = GridBagConstraints.HORIZONTAL;
                //Nimm so viel Platz, wie Du kriegen kannst
                gBC.weightx = 1.0;
                //ist letztes Element der Zeile
                gBC.gridwidth = GridBagConstraints.REMAINDER;
                //Innenabstand der Label-Zelle
                gBC.insets = new Insets(1, 1, 1, 1);
                gBL.setConstraints(tF, gBC);
                p.add(tF);
            }
     
            //Für das Fenster ein BorderLayout, um das Panel
            //in die Mitte zu packen.
            this.getContentPane().setLayout(new BorderLayout());
            this.getContentPane().add(sP, BorderLayout.CENTER);
     
            //Fenstergröße 400 x 500
            this.setSize(400, 500);
     
            //Wenn Fenster geschlossen wird,
            //Anwendung beenden.
            this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     
            //Anzeigen
            this.show();
        }
     
        public static void main(String[] args) {
            new GridBagFrame();
        }
    }
     
    Warum gibt (fast) keiner im Datenbankforum an, welches DBMS er benutzt?
    Ich gehe im Zweifelsfall ohne Nachfrage von MySQL > 4.1 i.V.m. PHP aus.
    Gewöhnt euch bitte auch an, die Fehlermeldung von mysql_error() zu posten.

Ähnliche Themen

  1. Seitenverhältnis beibehalten - LayoutManager
    Von Pasukaru im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 2
    Letzter Beitrag: 14.01.11, 16:56
  2. Modifizierte JComponent und LayoutManager
    Von SCIPIO-AEMILIANUS im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 5
    Letzter Beitrag: 28.12.10, 19:19
  3. Java Layout und Layoutmanager
    Von swas im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 6
    Letzter Beitrag: 17.08.10, 14:44
  4. LayoutManager und Abstand
    Von kloakenratte im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 0
    Letzter Beitrag: 07.05.08, 08:47
  5. LayoutManager Probleme
    Von squeeez im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 2
    Letzter Beitrag: 17.03.08, 19:05