Java/Swing JFC/GridBagLayout
Содержание
- 1 A GridBagLayout Example: weightx, weighty
- 2 Associate the gridbag constraints with the component
- 3 Create and set a gridbag layout and how to set gridbag constraints
- 4 Getting the Number of Rows and Columns of Cells in a GridBagLayout
- 5 GridBagConstraints.BOTH
- 6 GridBagLayout Pane
- 7 GridBagLayout with anchor constraints
- 8 GridBagLayout with constraints
- 9 GridBagLayout with gridwidth and gridheight constraints
- 10 GridBagLayout with weight constraint
- 11 GridBagLayout with weightx and weighty constraints
- 12 Make the component only stretch horizontally
- 13 Make the component only stretch vertically
- 14 Make the component on stretchable
- 15 Make the component stretch in both directions
- 16 Making a GridBagLayout Fill the Container
- 17 Place a component at (0,1) with a column weight 1 and a row weight of 2
- 18 Place a component at cell location (1,1)
- 19 Positioning a component in the center of other component using GridbagLayout
- 20 Setting Stretchyness of a GridBagLayout Using Fill
- 21 Setting the Location of a Component in a GridBagLayout
- 22 Setting the Space around a Component Within the Cell of the GridBagLayout Using Insets
- 23 Setting the Stretchyness of Rows and Columns in a GridBagLayout Using Layout Weights
- 24 Simplest gridbag layout
- 25 Work GridBagConstraints 3
- 26 Work with GridBagConstraints 1
- 27 Work with GridBagConstraints 2
- 28 Work with GridBagConstraints 5
A GridBagLayout Example: weightx, weighty
<source lang="java">
import java.awt.Button; import java.awt.Frame; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import javax.swing.JPanel; public class Main extends JPanel {
protected void makebutton(String name, GridBagLayout gridbag, GridBagConstraints c) { Button button = new Button(name); gridbag.setConstraints(button, c); add(button); } public Main() { GridBagLayout gridbag = new GridBagLayout(); GridBagConstraints c = new GridBagConstraints(); setLayout(gridbag); c.weightx = 1.0; c.weighty = 1.0; makebutton("Button 1", gridbag, c); c.fill = GridBagConstraints.BOTH; makebutton("Button 2", gridbag, c); } public static void main(String args[]) { Frame f = new Frame(); JPanel mgb = new Main(); f.add("Center", mgb); f.pack(); f.setSize(300, 300); f.setVisible(true); }
}
</source>
Associate the gridbag constraints with the component
<source lang="java">
import java.awt.Container; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import javax.swing.JButton; import javax.swing.JFrame; public class Main {
public static void main(String[] argv) throws Exception { JFrame frame = new JFrame(); Container container = frame.getContentPane(); GridBagLayout gbl = new GridBagLayout(); container.setLayout(gbl); GridBagConstraints gbc = new GridBagConstraints(); gbc.gridx = 1; gbc.gridy = 1; JButton component = new JButton("a"); gbl.setConstraints(component, gbc); container.add(component); frame.pack(); frame.setVisible(true); }
}
</source>
Create and set a gridbag layout and how to set gridbag constraints
<source lang="java">
import java.awt.Container; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import javax.swing.JButton; import javax.swing.JFrame; public class Main {
public static void main(String[] argv) throws Exception { JFrame frame = new JFrame(); Container container = frame.getContentPane(); GridBagLayout gbl = new GridBagLayout(); container.setLayout(gbl); // Place a component at cell location (1,1) GridBagConstraints gbc = new GridBagConstraints(); gbc.gridx = 1; gbc.gridy = 1; JButton component = new JButton("a"); // Associate the gridbag constraints with the component gbl.setConstraints(component, gbc); container.add(component); frame.pack(); frame.setVisible(true); }
}
</source>
Getting the Number of Rows and Columns of Cells in a GridBagLayout
<source lang="java">
import java.awt.Container; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import javax.swing.JButton; import javax.swing.JFrame; public class Main {
public static void main(String[] argv) throws Exception { JFrame frame = new JFrame(); Container container = frame.getContentPane(); GridBagLayout gbl = new GridBagLayout(); container.setLayout(gbl); GridBagConstraints gbc = new GridBagConstraints(); JButton component1 = new JButton("a"); JButton component2 = new JButton("b"); gbc.gridx = 1; gbc.gridy = 1; gbl.setConstraints(component1, gbc); container.add(component1); gbc.gridx = 0; gbc.gridy = 0; gbl.setConstraints(component2, gbc); container.add(component2); container.add(component1); container.add(component2); frame.pack(); frame.setVisible(true); gbl.layoutContainer(container); int[][] dim = gbl.getLayoutDimensions(); int cols = dim[0].length; int rows = dim[1].length; System.out.println(cols); System.out.println(rows); }
}
</source>
GridBagConstraints.BOTH
<source lang="java">
import java.awt.ruponent; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; public class GridBag4 extends JPanel {
GridBagConstraints constraints = new GridBagConstraints(); public GridBag4() { setLayout(new GridBagLayout()); constraints.fill = GridBagConstraints.BOTH; constraints.weighty = 1.0; int x, y; // for clarity constraints.weightx = 0.1; addGB(new JButton("one"), x = 0, y = 0); constraints.weightx = 0.5; addGB(new JButton("two"), ++x, y); constraints.weightx = 1.0; addGB(new JButton("three"), ++x, y); } void addGB(Component component, int x, int y) { constraints.gridx = x; constraints.gridy = y; add(component, constraints); } public static void main(String[] args) { JFrame frame = new JFrame("GridBag4"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(300, 100); frame.setLocation(200, 200); frame.setContentPane(new GridBag4()); frame.setVisible(true); }
}
</source>
GridBagLayout Pane
<source lang="java">
/*
* Copyright (c) 2000 David Flanagan. All rights reserved. This code is from the * book Java Examples in a Nutshell, 2nd Edition. It is provided AS-IS, WITHOUT * ANY WARRANTY either expressed or implied. You may study, use, and modify it * for any non-commercial purpose. You may distribute it non-commercially as * long as you retain this notice. For a commercial use license, or to purchase * the book (recommended), visit http://www.davidflanagan.ru/javaexamples2. */
import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Insets; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; public class GridBagLayoutPane extends JPanel {
public GridBagLayoutPane() { // Create and specify a layout manager this.setLayout(new GridBagLayout()); // Create a constraints object, and specify some default values GridBagConstraints c = new GridBagConstraints(); c.fill = GridBagConstraints.BOTH; // components grow in both dimensions c.insets = new Insets(5, 5, 5, 5); // 5-pixel margins on all sides // Create and add a bunch of buttons, specifying different grid // position, and size for each. // Give the first button a resize weight of 1.0 and all others // a weight of 0.0. The first button will get all extra space. c.gridx = 0; c.gridy = 0; c.gridwidth = 4; c.gridheight = 4; c.weightx = c.weighty = 1.0; this.add(new JButton("Button #1"), c); c.gridx = 4; c.gridy = 0; c.gridwidth = 1; c.gridheight = 1; c.weightx = c.weighty = 0.0; this.add(new JButton("Button #2"), c); c.gridx = 4; c.gridy = 1; c.gridwidth = 1; c.gridheight = 1; this.add(new JButton("Button #3"), c); c.gridx = 4; c.gridy = 2; c.gridwidth = 1; c.gridheight = 2; this.add(new JButton("Button #4"), c); c.gridx = 0; c.gridy = 4; c.gridwidth = 1; c.gridheight = 1; this.add(new JButton("Button #5"), c); c.gridx = 2; c.gridy = 4; c.gridwidth = 1; c.gridheight = 1; this.add(new JButton("Button #6"), c); c.gridx = 3; c.gridy = 4; c.gridwidth = 2; c.gridheight = 1; this.add(new JButton("Button #7"), c); c.gridx = 1; c.gridy = 5; c.gridwidth = 1; c.gridheight = 1; this.add(new JButton("Button #8"), c); c.gridx = 3; c.gridy = 5; c.gridwidth = 1; c.gridheight = 1; this.add(new JButton("Button #9"), c); } public static void main(String[] a) { JFrame f = new JFrame(); f.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); f.setContentPane(new GridBagLayoutPane()); f.pack(); f.setVisible(true); }
}
</source>
GridBagLayout with anchor constraints
<source lang="java">
import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Insets; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.awt.event.WindowListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; public class GridBagWithAnchor {
public static void main(String[] args) { JFrame f = new JFrame( "Demonstrates the use of anchor constraints"); JPanel p = new JPanel(new GridBagLayout()); p.setLayout(new GridBagLayout()); GridBagConstraints c = new GridBagConstraints(); c.insets = new Insets(2, 2, 2, 2); c.weighty = 1.0; c.weightx = 1.0; c.gridx = 0; c.gridy = 0; c.gridheight = 2; c.anchor = GridBagConstraints.NORTH; // place component on the North p.add(new JButton("Java"), c); c.gridx = 1; c.gridheight = 1; c.gridwidth = 2; c.anchor = GridBagConstraints.SOUTHWEST; p.add(new JButton("Source"), c); c.gridy = 1; c.gridwidth = 1; c.anchor = GridBagConstraints.CENTER; // remember to rest to center p.add(new JButton("and"), c); c.gridx = 2; p.add(new JButton("Support !!!"), c); WindowListener wndCloser = new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }; f.addWindowListener(wndCloser); f.getContentPane().add(p); f.setSize(600, 200); f.show(); }
}
</source>
GridBagLayout with constraints
<source lang="java">
import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Insets; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.awt.event.WindowListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; public class GridBagWithContaints {
public static void main(String[] args) { JFrame f = new JFrame( "Demonstrates the use of gridx, gridy,ipadx, ipady and insets constraints"); JPanel p = new JPanel(); p.setLayout(new GridBagLayout()); // creates a constraints object GridBagConstraints c = new GridBagConstraints(); c.insets = new Insets(2, 2, 2, 2); // insets for all components c.gridx = 0; // column 0 c.gridy = 0; // row 0 c.ipadx = 5; // increases components width by 10 pixels c.ipady = 5; // increases components height by 10 pixels p.add(new JButton("Java"), c); // constraints passed in c.gridx = 1; // column 1 // c.gridy = 0; // comment out this for reusing the obj c.ipadx = 0; // resets the pad to 0 c.ipady = 0; p.add(new JButton("Source"), c); c.gridx = 0; // column 0 c.gridy = 1; // row 1 p.add(new JButton("and"), c); c.gridx = 1; // column 1 p.add(new JButton("Support."), c); WindowListener wndCloser = new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }; f.addWindowListener(wndCloser); f.getContentPane().add(p); f.setSize(600, 200); f.show(); }
}
</source>
GridBagLayout with gridwidth and gridheight constraints
<source lang="java">
import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Insets; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.awt.event.WindowListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; public class GridBagWithGridWidthHeight {
public static void main(String[] args) { JFrame f = new JFrame( "Demonstrates the use of gridwidth, gridheight constraints"); JPanel p = new JPanel(new GridBagLayout()); GridBagConstraints c = new GridBagConstraints(); c.insets = new Insets(2, 2, 2, 2); c.weighty = 1.0; c.weightx = 1.0; c.gridx = 0; c.gridy = 0; c.gridheight = 2; // span across 2 rows p.add(new JButton("Java"), c); c.gridx = 1; c.gridheight = 1; // set back to 1 row c.gridwidth = 2; // span across 2 columns p.add(new JButton("Source"), c); c.gridy = 1; c.gridwidth = 1; // set back to 1 column p.add(new JButton("and"), c); c.gridx = 2; p.add(new JButton("Support."), c); WindowListener wndCloser = new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }; f.addWindowListener(wndCloser); f.getContentPane().add(p); f.setSize(600, 200); f.show(); }
}
</source>
GridBagLayout with weight constraint
<source lang="java">
import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Insets; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.awt.event.WindowListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; public class GridBagWithWeight {
public static void main(String[] args) { JFrame f = new JFrame( "Demonstrates the use of fill constraints"); JPanel p = new JPanel(new GridBagLayout()); GridBagConstraints c = new GridBagConstraints(); c.insets = new Insets(2, 2, 2, 2); c.weighty = 1.0; c.weightx = 1.0; c.gridx = 0; c.gridy = 0; c.gridheight = 2; c.fill = GridBagConstraints.BOTH; // Use both horizontal & vertical p.add(new JButton("Java"), c); c.gridx = 1; c.gridheight = 1; c.gridwidth = 2; c.fill = GridBagConstraints.HORIZONTAL; // Horizontal only p.add(new JButton("Source"), c); c.gridy = 1; c.gridwidth = 1; c.fill = GridBagConstraints.NONE; // Remember to reset to none p.add(new JButton("and"), c); c.gridx = 2; c.fill = GridBagConstraints.VERTICAL; // Vertical only p.add(new JButton("Support."), c); WindowListener wndCloser = new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }; f.addWindowListener(wndCloser); f.getContentPane().add(p); f.setSize(600, 200); f.show(); }
}
</source>
GridBagLayout with weightx and weighty constraints
<source lang="java">
import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Insets; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.awt.event.WindowListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; public class GridBagWithWeight {
public static void main(String[] args) { JFrame f = new JFrame( "Demonstrates the use of weightx, weighty constraints"); JPanel p = new JPanel(); p.setLayout(new GridBagLayout()); GridBagConstraints c = new GridBagConstraints(); p.setLayout(new GridBagLayout()); c = new GridBagConstraints(); c.insets = new Insets(2, 2, 2, 2); c.weighty = 1.0; c.weightx = 1.0; c.gridx = 0; c.gridy = 0; p.add(new JButton("Java"), c); c.gridx = 1; p.add(new JButton("Source"), c); c.gridx = 0; c.gridy = 1; p.add(new JButton("and"), c); c.gridx = 1; p.add(new JButton("Support."), c); WindowListener wndCloser = new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }; f.addWindowListener(wndCloser); f.getContentPane().add(p); f.setSize(600, 200); f.show(); }
}
</source>
Make the component only stretch horizontally
<source lang="java">
import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import javax.swing.JButton; import javax.swing.JFrame; public class Main {
public static void main(String[] argv) throws Exception { JFrame frame = new JFrame(); GridBagLayout gbl = new GridBagLayout(); frame.setLayout(gbl); JButton component = new JButton("1"); frame.add(component); frame.add(new JButton("2")); gbl.layoutContainer(frame); GridBagConstraints gbc = new GridBagConstraints(); gbc.fill = GridBagConstraints.HORIZONTAL; gbl.setConstraints(component, gbc); frame.add(component); frame.pack(); frame.setVisible(true); }
}
</source>
Make the component only stretch vertically
<source lang="java">
import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import javax.swing.JButton; import javax.swing.JFrame; public class Main {
public static void main(String[] argv) throws Exception { JFrame frame = new JFrame(); GridBagLayout gbl = new GridBagLayout(); frame.setLayout(gbl); JButton component = new JButton("1"); frame.add(component); frame.add(new JButton("2")); gbl.layoutContainer(frame); GridBagConstraints gbc = new GridBagConstraints(); gbc.fill = GridBagConstraints.VERTICAL; gbl.setConstraints(component, gbc); frame.add(component); frame.pack(); frame.setVisible(true); }
}
</source>
Make the component on stretchable
<source lang="java">
import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import javax.swing.JButton; import javax.swing.JFrame; public class Main {
public static void main(String[] argv) throws Exception { JFrame frame = new JFrame(); GridBagLayout gbl = new GridBagLayout(); frame.setLayout(gbl); JButton component = new JButton("1"); frame.add(component); frame.add(new JButton("2")); gbl.layoutContainer(frame); GridBagConstraints gbc = new GridBagConstraints(); gbc.fill = GridBagConstraints.NONE; gbl.setConstraints(component, gbc); frame.add(component); frame.pack(); frame.setVisible(true); }
}
</source>
Make the component stretch in both directions
<source lang="java">
import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import javax.swing.JButton; import javax.swing.JFrame; public class Main {
public static void main(String[] argv) throws Exception { JFrame frame = new JFrame(); GridBagLayout gbl = new GridBagLayout(); frame.setLayout(gbl); JButton component = new JButton("1"); frame.add(component); frame.add(new JButton("2")); gbl.layoutContainer(frame); GridBagConstraints gbc = new GridBagConstraints(); gbc.fill = GridBagConstraints.BOTH; gbl.setConstraints(component, gbc); frame.add(component); frame.pack(); frame.setVisible(true); }
}
</source>
Making a GridBagLayout Fill the Container
<source lang="java">
import java.awt.GridBagLayout; import javax.swing.JButton; import javax.swing.JFrame; public class Main {
public static void main(String[] argv) throws Exception { JFrame frame = new JFrame(); GridBagLayout gbl = new GridBagLayout(); frame.setLayout(gbl); frame.add(new JButton("1")); frame.add(new JButton("2")); gbl.layoutContainer(frame); double[][] weights = gbl.getLayoutWeights(); for (int i = 0; i < 2; i++) { for (int j = 0; j < weights[i].length; j++) { weights[i][j] = 1; } } gbl.columnWeights = weights[0]; gbl.rowWeights = weights[1]; frame.pack(); frame.setVisible(true); }
}
</source>
Place a component at (0,1) with a column weight 1 and a row weight of 2
<source lang="java">
import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import javax.swing.JButton; import javax.swing.JFrame; public class Main {
public static void main(String[] argv) throws Exception { JFrame frame = new JFrame(); GridBagLayout gbl = new GridBagLayout(); frame.setLayout(gbl); JButton component = new JButton("1"); frame.add(component); frame.add(new JButton("2")); gbl.layoutContainer(frame); GridBagConstraints gbc = new GridBagConstraints(); gbc.gridx = 0; gbc.gridy = 1; gbc.weightx = 1; gbc.weighty = 2; gbl.setConstraints(component, gbc);
frame.pack(); frame.setVisible(true); }
}
</source>
Place a component at cell location (1,1)
<source lang="java">
import java.awt.Container; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import javax.swing.JButton; import javax.swing.JFrame; public class Main {
public static void main(String[] argv) throws Exception { JFrame frame = new JFrame(); Container container = frame.getContentPane(); GridBagLayout gbl = new GridBagLayout(); container.setLayout(gbl); GridBagConstraints gbc = new GridBagConstraints(); gbc.gridx = 1; gbc.gridy = 1; JButton component = new JButton("a"); gbl.setConstraints(component, gbc); container.add(component); frame.pack(); frame.setVisible(true); }
}
</source>
Positioning a component in the center of other component using GridbagLayout
<source lang="java">
import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Label; import javax.swing.JFrame; import javax.swing.JPanel; public class Main {
public static void main(String[] argv) { JFrame demo = new JFrame("GridBag demo, to center a component"); JPanel parentPanel = new JPanel(); GridBagLayout gridbag = new GridBagLayout(); GridBagConstraints constraints = new GridBagConstraints(); constraints.fill = GridBagConstraints.CENTER; gridbag.setConstraints(parentPanel, constraints); parentPanel.setLayout(gridbag); Label centerLabel = new Label(" AAA..."); parentPanel.add(centerLabel); demo.add(parentPanel); demo.setSize(500, 500); demo.setVisible(true); }
}
</source>
Setting Stretchyness of a GridBagLayout Using Fill
<source lang="java">
import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import javax.swing.JButton; import javax.swing.JFrame; public class Main {
public static void main(String[] argv) throws Exception { JFrame frame = new JFrame(); GridBagLayout gbl = new GridBagLayout(); frame.setLayout(gbl); JButton component = new JButton("1"); frame.add(component); frame.add(new JButton("2")); gbl.layoutContainer(frame); GridBagConstraints gbc = new GridBagConstraints(); // Make the component on stretchable gbc.fill = GridBagConstraints.NONE; gbl.setConstraints(component, gbc); frame.add(component); frame.pack(); frame.setVisible(true); }
}
</source>
Setting the Location of a Component in a GridBagLayout
<source lang="java">
import java.awt.Container; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import javax.swing.JButton; import javax.swing.JFrame; public class Main {
public static void main(String[] argv) throws Exception { JFrame frame = new JFrame(); Container container = frame.getContentPane(); GridBagLayout gbl = new GridBagLayout(); container.setLayout(gbl); GridBagConstraints gbc = new GridBagConstraints(); JButton component1 = new JButton("a"); JButton component2 = new JButton("b"); gbc.gridx = 1; gbc.gridy = 1; gbl.setConstraints(component1, gbc); container.add(component1); gbc.gridx = 0; gbc.gridy = 0; gbl.setConstraints(component2, gbc); container.add(component2); container.add(component1); container.add(component2); frame.pack(); frame.setVisible(true); }
}
</source>
Setting the Space around a Component Within the Cell of the GridBagLayout Using Insets
<source lang="java">
import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Insets; import javax.swing.JButton; import javax.swing.JFrame; public class Main {
public static void main(String[] argv) throws Exception { JFrame frame = new JFrame(); GridBagLayout gbl = new GridBagLayout(); frame.setLayout(gbl); JButton component = new JButton("1"); frame.add(new JButton("2")); frame.add(new JButton("3")); frame.add(new JButton("4")); frame.add(new JButton("5")); frame.add(component); frame.add(new JButton("6")); frame.add(new JButton("7")); frame.add(new JButton("8")); frame.add(new JButton("9")); frame.add(new JButton("0")); gbl.layoutContainer(frame); GridBagConstraints gbc = new GridBagConstraints(); int top = 20; int left = 20; int bottom = 2; int right = 40; gbc.insets = new Insets(top, left, bottom, right); gbl.setConstraints(component, gbc);
frame.pack(); frame.setVisible(true); }
}
</source>
Setting the Stretchyness of Rows and Columns in a GridBagLayout Using Layout Weights
<source lang="java">
import java.awt.GridBagLayout; import javax.swing.JButton; import javax.swing.JFrame; public class Main {
public static void main(String[] argv) throws Exception { JFrame frame = new JFrame(); GridBagLayout gbl = new GridBagLayout(); frame.setLayout(gbl); frame.add(new JButton("1")); frame.add(new JButton("2")); gbl.layoutContainer(frame);
gbl.columnWeights = new double[]{0.0f, 1.0f, 2.0f}; gbl.rowWeights = new double[]{0.0f, 1.0f}; frame.pack(); frame.setVisible(true); }
}
</source>
Simplest gridbag layout
<source lang="java">
import java.awt.GridBagLayout; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.awt.event.WindowListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; public class SimpleGridBag {
public static void main(String[] args) { JFrame f = new JFrame(); JPanel p = new JPanel(); p.setLayout(new GridBagLayout()); p.add(new JButton("Java")); p.add(new JButton("Source")); p.add(new JButton("and")); p.add(new JButton("Support.")); WindowListener wndCloser = new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }; f.addWindowListener(wndCloser); f.getContentPane().add(p); f.setSize(600, 200); f.show(); }
}
</source>
Work GridBagConstraints 3
<source lang="java">
import java.awt.ruponent; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; public class GridBag3 extends JPanel {
GridBagConstraints constraints = new GridBagConstraints(); public GridBag3() { setLayout(new GridBagLayout()); constraints.weightx = 1.0; constraints.weighty = 1.0; constraints.fill = GridBagConstraints.BOTH; int x, y; constraints.gridheight = 2; // span two rows addGB(new JButton("one"), x = 0, y = 0); constraints.gridheight = 1; // set it back addGB(new JButton("two"), x = 1, y = 0); addGB(new JButton("three"), x = 2, y = 0); constraints.gridwidth = 2; // span two columns addGB(new JButton("four"), x = 1, y = 1); constraints.gridwidth = 1; // set it back } void addGB(Component component, int x, int y) { constraints.gridx = x; constraints.gridy = y; add(component, constraints); } public static void main(String[] args) { JFrame frame = new JFrame("GridBag3"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(200, 200); frame.setLocation(200, 200); frame.setContentPane(new GridBag3()); frame.setVisible(true); }
}
</source>
Work with GridBagConstraints 1
<source lang="java">
import java.awt.ruponent; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; public class GridBag1 extends JPanel {
GridBagConstraints constraints = new GridBagConstraints(); public GridBag1() { setLayout(new GridBagLayout()); int x, y; // for clarity addGB(new JButton("North"), x = 1, y = 0); addGB(new JButton("West"), x = 0, y = 1); addGB(new JButton("Center"), x = 1, y = 1); addGB(new JButton("East"), x = 2, y = 1); addGB(new JButton("South"), x = 1, y = 2); } void addGB(Component component, int x, int y) { constraints.gridx = x; constraints.gridy = y; add(component, constraints); } public static void main(String[] args) { JFrame frame = new JFrame("GridBag1"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(225, 150); frame.setLocation(200, 200); frame.setContentPane(new GridBag1()); frame.setVisible(true); }
}
</source>
Work with GridBagConstraints 2
<source lang="java">
import java.awt.ruponent; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; public class GridBag2 extends JPanel {
GridBagConstraints constraints = new GridBagConstraints(); public GridBag2() { setLayout(new GridBagLayout()); constraints.weightx = 1.0; constraints.weighty = 1.0; constraints.fill = GridBagConstraints.BOTH; int x, y; // for clarity addGB(new JButton("North"), x = 1, y = 0); addGB(new JButton("West"), x = 0, y = 1); addGB(new JButton("Center"), x = 1, y = 1); addGB(new JButton("East"), x = 2, y = 1); addGB(new JButton("South"), x = 1, y = 2); } void addGB(Component component, int x, int y) { constraints.gridx = x; constraints.gridy = y; add(component, constraints); } public static void main(String[] args) { JFrame frame = new JFrame("GridBag2"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(225, 150); frame.setLocation(200, 200); frame.setContentPane(new GridBag2()); frame.setVisible(true); }
}
</source>
Work with GridBagConstraints 5
<source lang="java">
import java.awt.ruponent; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; public class GridBag5 extends JPanel {
GridBagConstraints constraints = new GridBagConstraints(); public GridBag5() { setLayout(new GridBagLayout()); int x, y; // for clarity addGB(new JButton("North"), x = 1, y = 0); constraints.ipadx = 25; // add padding constraints.ipady = 25; addGB(new JButton("West"), x = 0, y = 1); constraints.ipadx = 0; // remove padding constraints.ipady = 0; addGB(new JButton("Center"), x = 1, y = 1); addGB(new JButton("East"), x = 2, y = 1); addGB(new JButton("South"), x = 1, y = 2); } void addGB(Component component, int x, int y) { constraints.gridx = x; constraints.gridy = y; add(component, constraints); } public static void main(String[] args) { JFrame frame = new JFrame("GridBag5"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(250, 250); frame.setLocation(200, 200); frame.setContentPane(new GridBag5()); frame.setVisible(true); }
}
</source>