Swing的Box布局

package com.wangyu;

// 使用盒式布局管理器
import javax.swing.JFrame;
import javax.swing.JButton;
import javax.swing.BoxLayout;
import javax.swing.Box;
import javax.swing.ButtonGroup;
import javax.swing.JRadioButton;
import javax.swing.JCheckBox;
import javax.swing.JPanel;
import javax.swing.BorderFactory;
import javax.swing.border.Border;
import javax.swing.border.TitledBorder;
import javax.swing.border.EtchedBorder;
import javax.swing.border.CompoundBorder;
import javax.swing.border.BevelBorder;

import java.awt.Toolkit;
import java.awt.Dimension;
import java.awt.Container;
import java.awt.BorderLayout;
import java.awt.Color;

public class TryBoxLayout {
	// The window object
	static JFrame aWindow = new JFrame("This is a Box Layout");
	/**
	 * Method main
	 *
	 *
	 * @param args
	 *
	 */
	public static void main(String[] args) {
		Toolkit theKit=aWindow.getToolkit();		// Get the window toolkit
		Dimension wndSize=theKit.getScreenSize();	// Get screen size
		
		// Set the position to screen center & size to half screen size
		aWindow.setBounds(wndSize.width/4,wndSize.height/4,	// Position
						  wndSize.width/2,wndSize.height/2);// Size
						  
		aWindow.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		// Create left column of radio buttons
		Box left=Box.createVerticalBox();
		ButtonGroup radioGroup=new ButtonGroup();			// Create button group
		JRadioButton rbutton;								// Stores a button
		radioGroup.add(rbutton=new JRadioButton("Red"));	// Add to group
		left.add(Box.createVerticalStrut(30));				// Starting space
		left.add(rbutton);									// Add to Box
		radioGroup.add(rbutton=new JRadioButton("Green"));	// Add to group
		left.add(Box.createVerticalStrut(30));				// Space between
		left.add(rbutton);									// Add to Box
		radioGroup.add(rbutton=new JRadioButton("Blue"));	// Add to group
		left.add(Box.createVerticalStrut(30));				// Space between
		left.add(rbutton);									// Add to Box
		radioGroup.add(rbutton=new JRadioButton("Yellow"));	// Add to group
		left.add(Box.createVerticalStrut(30));				// Space between
		left.add(rbutton);									// Add to Box
		left.add(Box.createGlue());							// Clue at the end
		
		// Create a panel with a titled border to hold the left Box container
		JPanel leftPanel=new JPanel(new BorderLayout());
		leftPanel.setBorder(new TitledBorder(
			new EtchedBorder(),								// Border to use
			"Line Color"));									// Border title
		leftPanel.add(left,BorderLayout.CENTER);
		
		// Create right columns of checkboxes
		Box right=Box.createVerticalBox();
		right.add(Box.createVerticalStrut(30));				// Starting space
		right.add(new JCheckBox("Dashed"));
		right.add(Box.createVerticalStrut(30));				// Space between
		right.add(new JCheckBox("Thick"));
		right.add(Box.createVerticalStrut(30));				// Space between
		right.add(new JCheckBox("Rounded"));
		right.add(Box.createGlue());						// Glue at the end
		
		// Create a panel with a titled border to hold the right Box container
		JPanel rightPanel=new JPanel(new BorderLayout());
		rightPanel.setBorder(new TitledBorder(
			new EtchedBorder(),								// Border to use
			"Line Properties"));							// Border title
		rightPanel.add(right,BorderLayout.CENTER);
		
		// Create top row to hold left and right
		Box top=Box.createHorizontalBox();
		top.add(leftPanel);
		top.add(Box.createHorizontalStrut(5));				// Space between vertical boxes
		top.add(rightPanel);
		
		// Create bottom row of buttons
		JPanel bottomPanel=new JPanel();
		bottomPanel.setBorder(new CompoundBorder(
			BorderFactory.createLineBorder(Color.BLACK,1),			// Outer border
			BorderFactory.createBevelBorder(BevelBorder.RAISED)));	// Inner border
		
		Border edge=BorderFactory.createRaisedBevelBorder();	// Button border
		JButton button;
		Dimension size=new Dimension(80,20);
		bottomPanel.add(button=new JButton("Defaults"));
		button.setBorder(edge);
		button.setPreferredSize(size);
		bottomPanel.add(button=new JButton("OK"));
		button.setBorder(edge);
		button.setPreferredSize(size);
		bottomPanel.add(button=new JButton("Cancel"));
		button.setBorder(edge);
		button.setPreferredSize(size);
		
		// Add top and bottom panel to content pane
		Container content=aWindow.getContentPane();		// Get content pane
		BoxLayout box=new BoxLayout(content,BoxLayout.Y_AXIS);
														// Vertical for content pane
		content.setLayout(box);			// Set border layout manager
		content.add(top);
		content.add(bottomPanel);
		
		aWindow.pack();								// Size for components
		aWindow.setVisible(true);					// Display the window
	}	
}

你可能感兴趣的:(swing)