控制台程序。

javax.swing.BoxLayout类定义的布局管理器在单行或单列中布局组件。创建BoxLayout对象时,需要指定是在行还是列中布局组件。

对于行,组件是从左到右地添加;对于列,组件是从上到下地添加。行或列已满时,给定行或列中的组件不会放到下一行或列中。当添加的组件数超出行或列的可用空间时,布局管理器会减小组件的大小,甚至能根据需要剪切组件,使它们都放在单行或单列中。有了一行组件后,方框布局管理器就会尝试使所有的组件高度都相同,或者尝试使一列组件的宽度相同。

 import javax.swing.*;
import java.awt.*;
import javax.swing.border.*; public class TryBoxLayout4 { public static void createWindow(){
JFrame aWindow = new JFrame("This is the Window Title");
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.setSize(wndSize.width/2, wndSize.height/2); // Set window size
aWindow.setLocationRelativeTo(null); // Center window
aWindow.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // Create left column of radio buttons
Box left = Box.createVerticalBox();
left.add(Box.createVerticalStrut(30)); // Starting space
ButtonGroup radioGroup = new ButtonGroup(); // Create button group
JRadioButton rbutton; // Stores a button
radioGroup.add(rbutton = new JRadioButton("Red")); // Add to group
left.add(rbutton); // Add to Box
left.add(Box.createVerticalStrut(30)); // Space between
radioGroup.add(rbutton = new JRadioButton("Green"));
left.add(rbutton);
left.add(Box.createVerticalStrut(30)); // Space between
radioGroup.add(rbutton = new JRadioButton("Blue"));
left.add(rbutton);
left.add(Box.createVerticalStrut(30)); // Space between
radioGroup.add(rbutton = new JRadioButton("Yellow"));
left.add(rbutton);
left.add(Box.createGlue()); // Glue 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 box layout manager
content.add(top);
content.add(bottomPanel); aWindow.pack(); // Size for components
aWindow.setVisible(true); // Display the window
} public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
createWindow();
}
});
}
}

Box类包含的静态方法可以创建不可见的组件,叫做“支柱(strut)"。垂直支柱有给定的高度(单位是像素),宽度为0。水平支柱有给定的宽度(单位是像素),高度为0。这些支柱的作用是允许在组件之间插入水平或垂直空格。
Box类中的createVerticalStrut()方法把垂直支柱返回为Component类型的对象。方法的参数指定了支柱的高度(单位为像素)。

使用"胶“(glue)可以控制Box对象中的剩余空间如何分配。胶是不可见的组件,唯一作用就是占据Box容器的剩余空间。尽管"胶"这个名称给人的印象是把组件捆绑在一起,但实际上,胶提供了两个组件之间的弹性连接器,这种连接器可以根据需要拉长或缩短,所以更像是弹簧。可以把胶组件放在Box中的组件之间,也可以放在Box对象的一端或两端。放置好组件后,剩余空间会在胶组件之间分配。

Java基础之创建窗口——使用BoxLayout管理器(TryBoxLayout4)的更多相关文章

  1. Java基础之创建窗口——使用GridBagLayout管理器(TryGridBagLayout)

    控制台程序. java.awt.GridBagLayout管理器比前面介绍的其他布局管理器灵活得多,因此使用起来也比较复杂.基本机制就是在随意的矩形网格中布局组件,但网格的行和列不一定拥有相同的高度和 ...

  2. Java基础之创建窗口——使用SpringLayout管理器(TrySpringLayout)

    控制台程序. 可以把JFrame对象aWindow的内容面板的布局管理器设置为javax.swing.SpringLayout管理器. SpringLayout类定义的布局管理器根据javax.swi ...

  3. Java基础之创建窗口——使用流布局管理器(TryFlowLayout)

    控制台程序. FlowLayout把组件放在容器的连续行中,使每一行都放置尽可能多的组件.如果某行已满,就放在下一行.工作方式类似于文本处理器把单词放在行中.主要用途是放置按钮,但也可以用来放置其他组 ...

  4. Java基础之创建窗口——使用网格布局管理器(TryGridLayout)

    控制台程序. 网格布局管理器可以在容器的矩形网格中布局组件. import javax.swing.*; import java.awt.*; import javax.swing.border.Et ...

  5. Java基础之创建窗口——使用卡片布局管理器(TryCardLayout)

    控制台程序. 卡片布局管理器会生成一叠组件——一个组件放在另一个组件的上面.添加到容器中的第一个组件在堆栈的顶部,因此是可见的,添加的最后一个组件在堆栈的底部.使用默认的构造函数CardLayout( ...

  6. Java基础之创建窗口——使用边界布局管理器(TryBorderLayout)

    控制台程序. 边界布局管理器最多能在容器中放置5个组件.在这种布局管理器中,可以把组件放在容器的任意一个边界上,也可以把组件放在容器的中心.每个位置只能放置一个组件.如果把组件放置在已被占用的边界上, ...

  7. Java基础之创建窗口——向窗口中添加菜单(Sketcher)

    控制台程序. JMenuBar对象表示放在窗口顶部的菜单栏.可以为JMenuBar对象添加JMenu或JMenuItem对象,它们都显示在菜单栏上.JMenu对象是带有标签的菜单,单击就可以显示一列菜 ...

  8. Java基础之创建窗口——颜色和光标(TryWindow4)

    控制台程序. java.awt包中把SystemColor类定义为Color类的子类.SystemColor类封装了本机操作系统用于显示各种组件的标准颜色.如果要比较SystemColor值和Colo ...

  9. Java基础之创建窗口——使窗口在屏幕居中(TryWindow2/TryWindow3)

    控制台程序. 1.使用ToolKit对象在屏幕的中心显示窗口,将窗口的宽度和高度设置为屏幕的一半: import javax.swing.JFrame; import javax.swing.Swin ...

随机推荐

  1. prepare PDO

    <?php $sql='SELECT email FROM users WHERE id = :id'; $statement=$pdo->prepare($sql);$userId=fi ...

  2. SELECT 'www' = 0; 1

    http://dev.mysql.com/doc/refman/5.7/en/type-conversion.html MySQL 5.7 Reference Manual  /  Functions ...

  3. How to Write a Spelling Corrector

    http://norvig.com/spell-correct.html Feb 2007to August 2016 How to Write a Spelling Corrector One we ...

  4. Java 基本数据类型转换

    1. Integer/int  转 String Integer a = 1; (int a = 1) String b = Integer.toString(a); 2. float 转 Strin ...

  5. 费用性支出预分摊form方式和web方式区别

    预分摊 1 form方式 费用性支出先通过生产资产行请求 生成一个资产行,如果该资产行分摊到两个资产上则分割成两个资产行,既所谓的针对资产行进行分摊. 2 web方式 费用性支出直接分摊到资产上形成资 ...

  6. JQuery..bind命名空间

    先看手册,由于bind方法有三个参数(type,[data],fn),所以手册上这么介绍: .bind() 方法是用于往文档上附加行为的主要方式.所有JavaScript事件对象, 比如focus, ...

  7. [dpdk] 读官方文档(1)

    前提:已读了这本书<<深入浅出dpdk(朱清河等著)>>. 目标:读官方文档,同时跟着文档进行安装编译等工作. http://dpdk.org/doc/guides/index ...

  8. 初入C的世界

    大家好,我叫吉贯之,来自贵州省遵义市,现就读于北京工业大学耿丹学院信息技术系计算机与科学专业,我的学号是160809127,我喜欢运动和一些电脑方面的软件操作. 应老师要求在博客园建立的博客,地址是h ...

  9. iOS开发之Objective-c的MD5/SHA1加密算法的实现

    Objective-c实现MD5和SHA1算法相对还是比较简单的,可以直接调用系统的C/C++共享库来实现调用 MD5即Message Digest Algorithm 5(信息-摘要算法 5),用于 ...

  10. node.js学习路线图

    http://www.admin10000.com/document/4624.html