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
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值