Re: GridBagLayout not behaving as specified



Qu0ll wrote:
"Ian Wilson" <scobloke2@xxxxxxxxxxxxx> wrote [snip]

I think you could use fewer than 16 columns and this might make things more predictable. I suspect some columns are shrinking to zero width because no component STARTS in them.

I have indeed tried fewer columns and the results are identical. I have tried as few as 6 columns which is the minimum required to get the results I desire. It just doesn't seem to work as it should.

Personally I'd use MigLayout and have about 1/10th the code.

I have never used it but I really need to understand why this code is failing. Any other ideas?



import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.GridBagConstraints;
import java.awt.Insets;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;

import net.miginfocom.swing.MigLayout;

public class GBTest extends JFrame {
private JPanel panel = new JPanel();
private JLabel userLabel = new JLabel("User:");
private JLabel passwordLabel = new JLabel("Password:");
private JLabel dbLabel = new JLabel("Database:");
private JTextField userTextField = new JTextField(10);
private JTextField dbTextField = new JTextField(14);
private JPasswordField passwordField = new JPasswordField(8);
private JButton dbButton = new JButton("...");

public GBTest() {
setLayout(new BorderLayout());
panel.setLayout(new MigLayout("wrap 4"));

panel.add(userLabel);
panel.add(userTextField);
panel.add(passwordLabel);
panel.add(passwordField, "span 2");
panel.add(dbLabel);
panel.add(dbTextField, "span 3");
panel.add(dbButton);

add(panel, BorderLayout.CENTER);

pack();
setPreferredSize(new Dimension(400, 250));
setSize(new Dimension(400, 250));
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
new GBTest().setVisible(true);
}
});
}
}
.


Quantcast