Java Swing 盒布局管理器

Swing 盒布局管理器

因为项目的原因,重新看看swing的东西,在想要将两个横向的容器纵向表示的时候,发现用盒布局

话不多说,直接代码

package ui;

import javax.swing.*;

public class TestDemoDock {
    public static void main(String[] agrs)
    {
        JFrame frame=new JFrame("盒布局管理器示例");
        Box b1=Box.createHorizontalBox();    //创建横向Box容器
        Box b2=Box.createHorizontalBox();    //创建横向Box容器
        Box b3=Box.createVerticalBox();    //创建纵向Box容器

        b3.add(b1);
        b3.add(b2);
        frame.add(b3);
//        frame.add(b1);    //将外层横向Box添加进窗体
//        b1.add(Box.createVerticalStrut(150));    //添加高度为150的垂直框架
        b1.add(new JButton("1"));    //添加按钮1
        b1.add(Box.createHorizontalStrut(200));    //添加长度为200的水平框架
        b1.add(new JButton("2"));    //添加按钮2
        b1.add(Box.createHorizontalStrut(350));    //添加长度为350的水平框架
        b1.add(new JButton("3"));    //添加按钮3
        b1.add(Box.createHorizontalStrut(200));    //添加长度为200的水平框架
        b1.add(Box.createHorizontalGlue());    //添加水平

//        b1.add(b2);    //添加嵌套的纵向Box容器
        //添加宽度为100,高度为100的固定区域
//        b2.add(Box.createRigidArea(new Dimension(100,100)));
//        b2.add(Box.createVerticalStrut(200));    //添加长度为200的垂直框架
        b2.add(new JButton("4"));    //添加按钮4
        b2.add(Box.createHorizontalStrut(400));    //添加长度为400的水平框架
        b2.add(new JButton("5"));    //添加按钮5
        b2.add(Box.createHorizontalStrut(150));    //添加长度为150的水平框架
        b2.add(new JButton("6"));    //添加按钮6
        b2.add(Box.createHorizontalGlue());    //添加水平

        //设置窗口的关闭动作、标题、大小位置以及可见性等
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setBounds(100,100,750,480);
        frame.setVisible(true);
    }
}

如图所示

image

试了一下,把下拉框和复选框进行操作

package ui;

import javax.swing.*;

public class TestDemoXList {
    public static void main(String[] args)
    {
        JFrame frame=new JFrame("Java下拉列表组件示例");
        Box b1=Box.createHorizontalBox();    //创建横向Box容器
        Box b2=Box.createHorizontalBox();    //创建横向Box容器
        Box b3=Box.createVerticalBox();    //创建纵向Box容器
        JPanel jp=new JPanel();    //创建面板
        JLabel label1=new JLabel("卡机地点");    //创建标签
        JComboBox cmb=new JComboBox();    //创建JComboBox
        cmb.addItem("");    //向下拉列表中添加一项
        cmb.addItem("北京");
        cmb.addItem("上海");
        cmb.addItem("深圳");
//        cmb.setBounds(20,20,200,20);
//        cmb.setPreferredSize(new Dimension(200,30));
        JCheckBox chkbox1=new JCheckBox("C#", true);    //创建指定文本和状态的复选框
        JCheckBox chkbox2=new JCheckBox("C++");    //创建指定文本的复选框
        JCheckBox chkbox3=new JCheckBox("Java");    //创建指定文本的复选框
        jp.add(label1);
        jp.add(cmb);
        jp.add(chkbox1);
        jp.add(chkbox2);
        jp.add(chkbox3);
        b1.add(label1);
        b1.add(cmb);
        b2.add(jp);
        b3.add(b1);
        b3.add(b2);
        frame.add(b3);
//        frame.add(jp);
//        b1.add(Box.createHorizontalGlue());    //添加水平
//        b1.add(Box.createVerticalStrut(20));    //添加高度为20的垂直框架
        frame.setBounds(0,0,750,480);
        frame.setVisible(true);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
}

如图所示

image

这个下拉框不知道为什么会自动拉满,就很烦,不过好歹说明了这个是可以放成两行的

您能读到这儿,我呢是发自真心的感谢您,若要转载,还望请您带上链接
原文地址:https://www.cnblogs.com/jokingremarks/p/15152564.html