Java Tutorial/Swing/GridBagLayout — различия между версиями
Admin (обсуждение | вклад) м (1 версия) |
|
(нет различий)
|
Версия 20:44, 31 мая 2010
Содержание
- 1 Associate the gridbag constraints with the component
- 2 Create and set a gridbag layout and how to set gridbag constraints
- 3 Getting the Number of Rows and Columns of Cells in a GridBagLayout
- 4 Make the component only stretch horizontally
- 5 Make the component only stretch vertically
- 6 Make the component on stretchable
- 7 Make the component stretch in both directions
- 8 Making a GridBagLayout Fill the Container
- 9 Place a component at (ith a column weight 1 and a row weight of 2
- 10 Place a component at cell location (1,1)
- 11 Positioning a component in the center of other component using GridbagLayout
- 12 Positions five components within a container, using weights, fill, and relative positioning
- 13 Setting Stretchyness of a GridBagLayout Using Fill
- 14 Setting the Location of a Component in a GridBagLayout
- 15 Setting the Space around a Component Within the Cell of the GridBagLayout Using Insets
- 16 Setting the Stretchyness of Rows and Columns in a GridBagLayout Using Layout Weights
- 17 Uses many features
- 18 Using a GridBagLayout Manager
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>
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 (ith 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>
Positions five components within a container, using weights, fill, and relative positioning
<source lang="java">
/*
* * Copyright (c) 1998 Sun Microsystems, Inc. All Rights Reserved. * * Sun grants you ("Licensee") a non-exclusive, royalty free, license to use, * modify and redistribute this software in source and binary code form, * provided that i) this copyright notice and license appear on all copies of * the software; and ii) Licensee does not utilize the software in a manner * which is disparaging to Sun. * * This software is provided "AS IS," without a warranty of any kind. ALL * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING ANY * IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR * NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN AND ITS LICENSORS SHALL NOT BE * LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING * OR DISTRIBUTING THE SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR ITS * LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR DIRECT, * INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER * CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF * OR INABILITY TO USE SOFTWARE, EVEN IF SUN HAS BEEN ADVISED OF THE * POSSIBILITY OF SUCH DAMAGES. * * This software is not designed or intended for use in on-line control of * aircraft, air traffic, aircraft navigation or aircraft communications; or in * the design, construction, operation or maintenance of any nuclear * facility. Licensee represents and warrants that it will not use or * redistribute the Software for such purposes. */
/*
* ContainerEventDemo.java requires no other files. */
import java.awt.Dimension; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.ContainerEvent; import java.awt.event.ContainerListener; import java.util.Vector; import javax.swing.BorderFactory; import javax.swing.JButton; import javax.swing.JComponent; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextArea; public class ContainerEventDemo extends JPanel implements ContainerListener, ActionListener {
JTextArea display; JPanel buttonPanel; JButton addButton, removeButton, clearButton; Vector<JButton> buttonList; static final String ADD = "add"; static final String REMOVE = "remove"; static final String CLEAR = "clear"; static final String newline = "\n"; public ContainerEventDemo() { super(new GridBagLayout()); GridBagLayout gridbag = (GridBagLayout) getLayout(); GridBagConstraints c = new GridBagConstraints(); // Initialize an empty list of buttons. buttonList = new Vector<JButton>(10, 10); // Create all the components. addButton = new JButton("Add a button"); addButton.setActionCommand(ADD); addButton.addActionListener(this); removeButton = new JButton("Remove a button"); removeButton.setActionCommand(REMOVE); removeButton.addActionListener(this); buttonPanel = new JPanel(new GridLayout(1, 1)); buttonPanel.setPreferredSize(new Dimension(200, 75)); buttonPanel.addContainerListener(this); display = new JTextArea(); display.setEditable(false); JScrollPane scrollPane = new JScrollPane(display); scrollPane.setPreferredSize(new Dimension(200, 75)); clearButton = new JButton("Clear text area"); clearButton.setActionCommand(CLEAR); clearButton.addActionListener(this); c.fill = GridBagConstraints.BOTH; // Fill entire cell. c.weighty = 1.0; // Button area and message area have equal height. c.gridwidth = GridBagConstraints.REMAINDER; // end of row gridbag.setConstraints(scrollPane, c); add(scrollPane); c.weighty = 0.0; gridbag.setConstraints(clearButton, c); add(clearButton); c.weightx = 1.0; // Add/remove buttons have equal width. c.gridwidth = 1; // NOT end of row gridbag.setConstraints(addButton, c); add(addButton); c.gridwidth = GridBagConstraints.REMAINDER; // end of row gridbag.setConstraints(removeButton, c); add(removeButton); c.weighty = 1.0; // Button area and message area have equal height. gridbag.setConstraints(buttonPanel, c); add(buttonPanel); setPreferredSize(new Dimension(400, 400)); setBorder(BorderFactory.createEmptyBorder(20, 20, 20, 20)); } public void componentAdded(ContainerEvent e) { displayMessage(" added to ", e); } public void componentRemoved(ContainerEvent e) { displayMessage(" removed from ", e); } void displayMessage(String action, ContainerEvent e) { display.append(((JButton) e.getChild()).getText() + " was" + action + e.getContainer().getClass().getName() + newline); display.setCaretPosition(display.getDocument().getLength()); } /* * This could have been implemented as two or three classes or objects, for * clarity. */ public void actionPerformed(ActionEvent e) { String command = e.getActionCommand(); if (ADD.equals(command)) { JButton newButton = new JButton("JButton #" + (buttonList.size() + 1)); buttonList.addElement(newButton); buttonPanel.add(newButton); buttonPanel.revalidate(); // Make the button show up. } else if (REMOVE.equals(command)) { int lastIndex = buttonList.size() - 1; try { JButton nixedButton = buttonList.elementAt(lastIndex); buttonPanel.remove(nixedButton); buttonList.removeElementAt(lastIndex); buttonPanel.revalidate(); // Make the button disappear. buttonPanel.repaint(); // Make the button disappear. } catch (ArrayIndexOutOfBoundsException exc) { } } else if (CLEAR.equals(command)) { display.setText(""); } } /** * Create the GUI and show it. For thread safety, this method should be * invoked from the event-dispatching thread. */ private static void createAndShowGUI() { // Create and set up the window. JFrame frame = new JFrame("ContainerEventDemo"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // Create and set up the content pane. JComponent newContentPane = new ContainerEventDemo(); newContentPane.setOpaque(true); // content panes must be opaque frame.setContentPane(newContentPane); // Display the window. frame.pack(); frame.setVisible(true); } public static void main(String[] args) { // Schedule a job for the event-dispatching thread: // creating and showing this application"s GUI. javax.swing.SwingUtilities.invokeLater(new Runnable() { public void run() { createAndShowGUI(); } }); }
}</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>
Uses many features
- weights, insets, internal padding, horizontal fill, exact cell positioning, multi-column cells, and anchoring (component positioning within a cell)
<source lang="java">
/*
* * Copyright (c) 1998 Sun Microsystems, Inc. All Rights Reserved. * * Sun grants you ("Licensee") a non-exclusive, royalty free, license to use, * modify and redistribute this software in source and binary code form, * provided that i) this copyright notice and license appear on all copies of * the software; and ii) Licensee does not utilize the software in a manner * which is disparaging to Sun. * * This software is provided "AS IS," without a warranty of any kind. ALL * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING ANY * IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR * NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN AND ITS LICENSORS SHALL NOT BE * LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING * OR DISTRIBUTING THE SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR ITS * LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR DIRECT, * INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER * CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF * OR INABILITY TO USE SOFTWARE, EVEN IF SUN HAS BEEN ADVISED OF THE * POSSIBILITY OF SUCH DAMAGES. * * This software is not designed or intended for use in on-line control of * aircraft, air traffic, aircraft navigation or aircraft communications; or in * the design, construction, operation or maintenance of any nuclear * facility. Licensee represents and warrants that it will not use or * redistribute the Software for such purposes. */
/*
* GridBagLayoutDemo.java requires no other files. */
import java.awt.ruponentOrientation; import java.awt.Container; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Insets; import javax.swing.JButton; import javax.swing.JFrame; public class GridBagLayoutDemo {
final static boolean shouldFill = true; final static boolean shouldWeightX = true; final static boolean RIGHT_TO_LEFT = false; public static void addComponentsToPane(Container pane) { if (RIGHT_TO_LEFT) { pane.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT); } JButton button; pane.setLayout(new GridBagLayout()); GridBagConstraints c = new GridBagConstraints(); if (shouldFill) { // natural height, maximum width c.fill = GridBagConstraints.HORIZONTAL; } button = new JButton("Button 1"); if (shouldWeightX) { c.weightx = 0.5; } c.gridx = 0; c.gridy = 0; pane.add(button, c); button = new JButton("Button 2"); c.gridx = 1; c.gridy = 0; pane.add(button, c); button = new JButton("Button 3"); c.gridx = 2; c.gridy = 0; pane.add(button, c); button = new JButton("Long-Named Button 4"); c.ipady = 40; // make this component tall c.weightx = 0.0; c.gridwidth = 3; c.gridx = 0; c.gridy = 1; pane.add(button, c); button = new JButton("5"); c.ipady = 0; // reset to default c.weighty = 1.0; // request any extra vertical space c.anchor = GridBagConstraints.PAGE_END; // bottom of space c.insets = new Insets(10, 0, 0, 0); // top padding c.gridx = 1; // aligned with button 2 c.gridwidth = 2; // 2 columns wide c.gridy = 2; // third row pane.add(button, c); } /** * Create the GUI and show it. For thread safety, this method should be * invoked from the event-dispatching thread. */ private static void createAndShowGUI() { // Create and set up the window. JFrame frame = new JFrame("GridBagLayoutDemo"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // Set up the content pane. addComponentsToPane(frame.getContentPane()); // Display the window. frame.pack(); frame.setVisible(true); } public static void main(String[] args) { // Schedule a job for the event-dispatching thread: // creating and showing this application"s GUI. javax.swing.SwingUtilities.invokeLater(new Runnable() { public void run() { createAndShowGUI(); } }); }
}</source>
Using a GridBagLayout Manager
- GridBagLayout is the most complex and most flexible of the layout managers.
- Elements are arranged in a rectangular grid.
- Elements can have different sizes and can occupy multiple rows or columns.
- The position and behavior of each element is specified by an instance of the GridBagConstraints class.
<source lang="java">
import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import javax.swing.BorderFactory; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.border.Border; public class TryGridBagLayout {
static JFrame aWindow = new JFrame("This is a Gridbag Layout"); public static void main(String[] args) { aWindow.setBounds(30, 30, 300, 300); aWindow.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); GridBagLayout gridbag = new GridBagLayout(); GridBagConstraints constraints = new GridBagConstraints(); aWindow.getContentPane().setLayout(gridbag); constraints.weightx = constraints.weighty = 10.0; constraints.fill = constraints.BOTH; addButton(" Press ", constraints, gridbag); constraints.gridwidth = constraints.REMAINDER; addButton("GO", constraints, gridbag); aWindow.setVisible(true); } static void addButton(String label, GridBagConstraints constraints, GridBagLayout layout) { Border edge = BorderFactory.createRaisedBevelBorder(); JButton button = new JButton(label); button.setBorder(edge); layout.setConstraints(button, constraints); aWindow.getContentPane().add(button); }
}</source>