Re: GridBagLayout not beh
To: comp.lang.java.gui
Qu0ll wrote:
"Ian Wilson" <scobloke2@infotop.co.uk> wrote in message
news:46273424$0$10730$db0fefd9@news.zen.co.uk...
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);
}
});
}
}
Thanks Ian. I am impressed with the conciseness of this layout but
unfortunately when I run that it puts the button on the next line and
not next to the text field as desired. Do you get the same result? I
have just downloaded the latest MiGLayout and am using Java 6 Update 2.
I must have an older version of MigLayout.
1) Try
panel.setLayout(new MigLayout()); // ***
panel.add(userLabel);
panel.add(userTextField);
panel.add(passwordLabel);
panel.add(passwordField, "span 2, wrap"); // ***
panel.add(dbLabel);
panel.add(dbTextField, "span 3");
panel.add(dbButton);
2) If that doesn't work read
http://www.miglayout.com/QuickStart.pdf
http://www.miglayout.com/whitepaper.html
I'd bear in mind how long you have spent learning GridBagLayout so far
and allow yourself at least a tenth of that time to read the above
documents and learn the basics of MigLayout.
MigLayout has some powerful, and hence complex looking, options, so
don't try to understand all of them to start with. As you can see, you
usually only need a very few directives to get the layout you want.
---
* Synchronet * The Whitehouse BBS --- whitehouse.hulds.com --- check it out free usenet!
--- Synchronet 3.15a-Win32 NewsLink 1.92
Time Warp of the Future BBS - telnet://time.synchro.net:24