Re: GridBagLayout not behaving as specified
- From: Ian Wilson <scobloke2@xxxxxxxxxxxxx>
- Date: Thu, 19 Apr 2007 10:14:05 +0100
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.GridBagLayout;
import java.awt.Insets;
import javax.swing.Box;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
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();
private JTextField dbTextField = new JTextField();
private JPasswordField passwordField = new JPasswordField(8);
private JButton dbButton = new JButton("...");
public GBTest() {
setLayout(new BorderLayout());
panel.setLayout(new GridBagLayout());
userLabel.setText("User:");
GridBagConstraints gbc = new GridBagConstraints();
gbc.gridx = 0;
gbc.gridy = 0;
gbc.gridwidth = 1;
gbc.anchor = GridBagConstraints.EAST;
gbc.insets = new Insets(0, 4, 18, 0);
gbc.ipadx = 0;
panel.add(userLabel, gbc);
gbc.gridx = 1;
gbc.gridy = 0;
gbc.gridwidth = 1;
gbc.fill = GridBagConstraints.HORIZONTAL;
gbc.weightx = 0.5;
gbc.weighty = 0.0;
gbc.insets = new Insets(0, 4, 18, 4);
gbc.ipadx = 40;
panel.add(userTextField, gbc);
gbc = new GridBagConstraints();
gbc.gridx = 2;
gbc.gridy = 0;
gbc.gridwidth = 1;
gbc.anchor = GridBagConstraints.EAST;
gbc.insets = new Insets(0, 4, 18, 0);
gbc.ipadx = 0;
panel.add(passwordLabel, gbc);
gbc.gridx = 3;
gbc.gridy = 0;
gbc.gridwidth = 2;
gbc.fill = GridBagConstraints.HORIZONTAL;
gbc.weightx = 0.5;
gbc.weighty = 0.0;
gbc.insets = new Insets(0, 4, 18, 8);
gbc.ipadx = 0;
panel.add(passwordField, gbc);
gbc.gridx = 0;
gbc.gridy = 1;
gbc.gridwidth = 1;
gbc.anchor = GridBagConstraints.EAST;
gbc.insets = new Insets(0, 4, 18, 0);
gbc.ipadx = 0;
panel.add(dbLabel, gbc);
gbc.gridx = 1;
gbc.gridy = 1;
gbc.gridwidth = 3;
gbc.fill = GridBagConstraints.HORIZONTAL;
gbc.weightx = 10;
gbc.weighty = 0.0;
gbc.insets = new Insets(0, 4, 18, 0);
gbc.ipadx = 0;
panel.add(dbTextField, gbc);
gbc.gridx = 4;
gbc.gridy = 1;
gbc.gridwidth = 1;
gbc.fill = GridBagConstraints.NONE;
gbc.anchor = GridBagConstraints.EAST;
gbc.weightx = 0.0;
gbc.weighty = 0.0;
gbc.insets = new Insets(0, 4, 18, 8);
gbc.ipadx = 0;
panel.add(dbButton, gbc);
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);
}
});
}
}
.
- Follow-Ups:
- Re: GridBagLayout not behaving as specified
- From: Qu0ll
- Re: GridBagLayout not behaving as specified
- References:
- GridBagLayout not behaving as specified
- From: Qu0ll
- Re: GridBagLayout not behaving as specified
- From: Ian Wilson
- Re: GridBagLayout not behaving as specified
- From: Qu0ll
- GridBagLayout not behaving as specified
- Prev by Date: How to disable maximum icon in a shell?
- Next by Date: Re: GridBagLayout not behaving as specified
- Previous by thread: Re: GridBagLayout not behaving as specified
- Next by thread: Re: GridBagLayout not behaving as specified
- Index(es):