GridLayout - Spaltenbreite variabel ?

Status
Nicht offen für weitere Antworten.

v2elite

Mitglied
Hai

Kann man mit einem Gridlayout 2 verschieden breite Spalten erzeugen oder ist dafür zwingend das GridBagLayout erforderlich ?


ich möchte ein borderlayout erzeugen und in CENTER ein Gridlayout plazieren

ein label und ein textfeld ungefähr so:


------Label1: |-------TextFeld-------|
langer Label2: |-------TextFeld-------|

also die textfelder spalte soll breiter sein als die label spalte
 

sayang

Aktives Mitglied
Hi,

also so richtig "drin" bin ich in den Layout-Managern von Java selbst nicht. Kenne BorderLayout und GridLayout und kann sie auch anwenden. GridBagLayout ist mir zu kompliziert :)
Aber für solche Sachen würde ich überlegen, ob ich JGoodies FormLayout (JGoodies :: Forms) nehme. Sieht ja auch so aus, als wäre es eine Art Formular. Das ist recht einfach zu handhaben.

Ansonsten würd ich BorderLayout und GridLayout kombinieren. Die Label-Spalte als eigenes Panel nach BorderLayout.WEST und die Textfeld-Spalte nach BorderLayout.CENTER. Musst nur darauf achten, dass die Zeilenhöhen immer schön gleich bleiben.

Lg
sayang
 

Marco13

Top Contributor
Musst nur darauf achten, dass die Zeilenhöhen immer schön gleich bleiben.

... und genau DAS ist das Problem :( Ich h*sse das GridBagLayout eigentlich auch. Es gibt IMHO nur EINEN Bereich, wo man das sinnvoll anwenden kann - nämlich eben genau bei sowas wie
Code:
+-------+-------------------+
| label | textField         |
+-------+-------------------+
| label | textField         |
+-------+-------------------+
| label | textField         |
+-------+-------------------+
Im allgemeinen bilden bei sowas die Zeilen sinnvolle Einheiten - und das dann in "linke und rechte Hälfte" aufzuteilen kann Probleme machen...
 

Marco13

Top Contributor
Und damit ist das u.U. gar nicht sooo aufwändig - hab' da mal ein Beispiel gebastelt
Java:
import java.awt.*;
import javax.swing.*;

public class GridBagLayoutSample extends JPanel
{
    public static void main(String args[])
    {
        JFrame f = new JFrame();
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.getContentPane().add(new GridBagLayoutSample());
        f.pack();
        f.setVisible(true);
    }


    public GridBagLayoutSample()
    {
        GridBagLayout gridBagLayout = new GridBagLayout();
        setLayout(gridBagLayout);

        addRow(0);
        addRow(1);
        addRow(2);
        addRow(3);
    }


    private void addRow(int y)
    {
        GridBagConstraints constraints = new GridBagConstraints();

        // These will be the same for all components in one row
        constraints.fill = GridBagConstraints.BOTH;
        constraints.insets = new Insets(4, 4, 4, 4);
        constraints.weighty = 1.0;
        constraints.gridy = y;

        // gridx  : The index of the component in the row
        // weightx: How much of the extra space that is available
        //          will be given to this component
        constraints.gridx = 0;
        constraints.weightx = 0.0;
        add(new JLabel("Label "+y), constraints);

        // The text field has weightx=1.0, thus it will get
        // all extra space that may be available
        constraints.gridx = 1;
        constraints.weightx = 1.0;
        add(new JTextField("TextField "+y), constraints);

        constraints.gridx = 2;
        constraints.weightx = 0.0;
        add(new JButton("Button "+y), constraints);
    }
}
 

L-ectron-X

Gesperrter Benutzer
Hier dann mal ein Code-Beispiel mit GridBagLayout:
Java:
import javax.swing.*;
import java.awt.*;

public class GBLTest {
   public static void main(String[] args)  {
      GridBagConstraints gbc = new GridBagConstraints();
      
      JPanel p = new JPanel(new GridBagLayout()); //Panel mit Layout anlegen
      p.setBorder(BorderFactory.createEmptyBorder(20, 10, 20, 10));
      
      //benötigte Komponenten erstellen
      JTextField tf1 = new JTextField();
      tf1.setPreferredSize(new Dimension(300, tf1.getPreferredSize().height));
      JTextField tf2 = new JTextField();
      JTextField tf3 = new JTextField();
      
      //Layout einstellen und Komponenten hinzufügen
      gbc.anchor = GridBagConstraints.EAST;
      gbc.insets = new Insets(0, 0, 5, 5);
      p.add(new JLabel("Name:"), gbc);
      
      gbc.gridy = 1;
      p.add(new JLabel("Vorname:"), gbc);
      
      gbc.gridy = 2;
      p.add(new JLabel("Staatsangehörigkeit:"), gbc);
      
      gbc.gridy = 0;
      gbc.gridx = 1;
      gbc.fill = GridBagConstraints.HORIZONTAL;
      gbc.weightx = 1.0;
      gbc.anchor = GridBagConstraints.WEST;
      gbc.insets = new Insets(0, 0, 5, 0);
      p.add(tf1, gbc);
      
      gbc.gridy = 1;
      p.add(tf2, gbc);
      
      gbc.gridy = 2;
      p.add(tf3, gbc);
      
      JFrame mf = new JFrame("GBL-Test");
      mf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      mf.add(p);
      mf.pack();
      mf.setLocationRelativeTo(null);
      mf.setVisible(true);
   }
}

Ist gar nicht sooo schwer... ;)
 
Zuletzt bearbeitet:
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S 3 Fragen, Verzeichnis, GridLayout psoitionieren, Werte für JSpinner Java Basics - Anfänger-Themen 2
L GridLayout, Beispiel? Java Basics - Anfänger-Themen 2
S GridLayout Java Basics - Anfänger-Themen 7
L GridLayout mit JLabel-Array füllen Java Basics - Anfänger-Themen 12
T Inhalt Gridlayout wird nicht angezeigt Java Basics - Anfänger-Themen 6
F Seitenrand beim GridLayout Java Basics - Anfänger-Themen 3
J GridLayout auf Panel zentrieren? Java Basics - Anfänger-Themen 2
D Objekte manuell in GridLayout einfügen Java Basics - Anfänger-Themen 4
B GridLayout - elemente mit Maus abfragen Java Basics - Anfänger-Themen 3
A Textfields + Labels in GridLayout(3,2) Java Basics - Anfänger-Themen 2
Developer_X Java GridLayout nicht ganz ausgereift Java Basics - Anfänger-Themen 6
Developer_X GridLayout->setPreferedSize(new Dimension(x,y,)); Java Basics - Anfänger-Themen 17
J Verständnisfrage GridLayout Java Basics - Anfänger-Themen 5
G GridLayout Allgemeine Fragen Java Basics - Anfänger-Themen 2
G GridLayout Java Basics - Anfänger-Themen 12
T GridLayout % Verändern? Java Basics - Anfänger-Themen 3
G Gridlayout Java Basics - Anfänger-Themen 4
Q Frage zu GridLayout Java Basics - Anfänger-Themen 5
O größe von panel mit gridlayout Java Basics - Anfänger-Themen 9
B Null-Layout oder GridLayout usw. Java Basics - Anfänger-Themen 5
V GridLayout anpassen? Java Basics - Anfänger-Themen 6
R GridLayout ignoriert setSize() u.ä. Angaben Java Basics - Anfänger-Themen 2
R leeres Feld im GridLayout (dummy Objekt erzeugen?) Java Basics - Anfänger-Themen 2
L Anpassung der Spaltenbreite auch auf eine zweite Tabelle anwenden Java Basics - Anfänger-Themen 8
M Spaltenbreite läßt sich nicht anpassen Java Basics - Anfänger-Themen 0
T JSpinner feste Spaltenbreite? Java Basics - Anfänger-Themen 3
M Spaltenbreite bei JTable Java Basics - Anfänger-Themen 2
C JTable Spaltenbreite anpassen Java Basics - Anfänger-Themen 9
M String.format() max. Spaltenbreite Java Basics - Anfänger-Themen 2
G Spaltenbreite festlegen Java Basics - Anfänger-Themen 2
G Spaltenbreite manuell anpassen bei einer JTable (wie bei.) Java Basics - Anfänger-Themen 13
N Ermitteln der Spaltenbreite => DATE-Spalte hat Länge 8 ?! Java Basics - Anfänger-Themen 10
B Methoden Übergebe Variabel funktioniert nicht Java Basics - Anfänger-Themen 17
B Variablen Int Variabel in JTextField ändern Java Basics - Anfänger-Themen 2
N Variabel in eine class mit "extends JLabel" übertragen Java Basics - Anfänger-Themen 2
T Ich habe eine Variabel die nicht Methoden übergreifend ist. Kann mir jemand Helfen :) Java Basics - Anfänger-Themen 5
S Objekt-Attribute "variabel" gestalten Java Basics - Anfänger-Themen 10
C Methoden Methode Variabel aufrufen Java Basics - Anfänger-Themen 2
O array mit Methode variabel befüllen Java Basics - Anfänger-Themen 5
Tacofan Variabel in einer anderen Methode Java Basics - Anfänger-Themen 2
S Binärer Suchbaum - Size als Variabel in innerer Klasse speichern Java Basics - Anfänger-Themen 2
M Name der Komponete/Variabel/Methode Java Basics - Anfänger-Themen 5
M Enum-Variabel-Abfrage funktioniert nicht? Java Basics - Anfänger-Themen 2
S Suche richtigen Typ für Variabel mit den Werten (neu, gebraucht, beschädigt) Java Basics - Anfänger-Themen 7
V kann ich eine TextProperty an eine booloan variabel binden ? Java Basics - Anfänger-Themen 2
G Variabel: Nach String benannte Methode ausführen Java Basics - Anfänger-Themen 13
M Konstruktor Problem - Variabel Erhöhen Java Basics - Anfänger-Themen 5
N Methoden Decimalformat variabel einstellen Java Basics - Anfänger-Themen 18
G Array nimmt Variabel nicht an Java Basics - Anfänger-Themen 14
K variabel.equal("text") verneinen Java Basics - Anfänger-Themen 2
M Objektnamen Variabel vergeben Java Basics - Anfänger-Themen 7
T Auf Variabel in einer anderen Methode zugreifen Java Basics - Anfänger-Themen 4
T File Variabel Java Basics - Anfänger-Themen 8
G Was zum Teufel ist denn so ein Ausdruck"variabel : vari Java Basics - Anfänger-Themen 8
A Variabel int a; int b; ? Java Basics - Anfänger-Themen 8
B Casting variabel gestalten. Java Basics - Anfänger-Themen 9
T Variabel großes String-Array in ein String speichern Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben