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);
}
}

如图所示

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

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);
}
}

如图所示

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

Java Swing 盒布局管理器的更多相关文章

  1. (转)Java 的swing.GroupLayout布局管理器的使用方法和实例

    摘自http://www.cnblogs.com/lionden/archive/2012/12/11/grouplayout.html (转)Java 的swing.GroupLayout布局管理器 ...

  2. JAVA流式布局管理器--JAVA基础

    JAVA流式布局管理器的使用: FlowLayoutDeme.java: import java.awt.*;import javax.swing.*;public class FlowLayoutD ...

  3. JAVA中GridBagLayout布局管理器应用详解

    很多情况下,我们已经不需要通过编写代码来实现一个应用程序的图形界面,而是通过强大的IDE工具通过拖拽辅以简单的事件处理代码即可很轻松的完成.但是我们不得不面对这样操作存在的一些问题,有时候我们希望能够 ...

  4. Java 的swing.GroupLayout布局管理器的使用方法和实例(转)

    The following builds a panel consisting of two labels in one column, followed by two textfields in t ...

  5. JAVA 流式布局管理器

    //流式布局管理器 import java.awt.*; import javax.swing.*; public class Jiemian2 extends JFrame{ //定义组件 JBut ...

  6. Java Swing 绝对布局管理方法,null布局(转)

    首先把相关容器的布局方式设为 setLayout(null); 然后调用组件的  setBounds() 方法 设置button的位置为(100,100) 长宽分别为 60,25 jButton.se ...

  7. learning java AWT BoxLayout布局管理器

    import javax.swing.*; import java.awt.*; public class BoxSpaceTest { private Frame f = new Frame(&qu ...

  8. Java可视化编程,基于布局管理器的UI设计

    在<事件驱动模型>讲述了如何将用户与功能实现代码联系到一起.怎么样便于用户理解和符合用户的使用习惯? 本篇还是就此问题作分析,站在用户角度上分析UI各组件倒底该如何设计呈现. 优秀的UI会 ...

  9. GridBagLayout布局管理器应用详解

    http://www.cnblogs.com/kungfupanda/p/7220217.html GridBagLayout布局管理器应用详解 很多情况下,我们已经不需要通过编写代码来实现一个应用程 ...

随机推荐

  1. salesforce零基础学习(一百零五)Change Data Capture

    本篇参考: https://developer.salesforce.com/docs/atlas.en-us.232.0.api_streaming.meta/api_streaming/using ...

  2. 全局获取HttpContext

    全局获取HttpContext 在我们平常开发中会有这样的需求,我们的Service业务层需要获取请求上下文中的用户信息,一般我们从控制器参数传递过来.如果你觉得这样就可以了,请您关闭文章. 场景 但 ...

  3. 闲聊,Python中的turtle

    写在前面 其实我也不知道为什么我会写这个,本文涉及信号与传递,Python 正题 近期看到一个3年前的视频,1000个圆一笔画出一个Miku 在观看完源码了以后,我发现这是这调用的是基本的goto,用 ...

  4. mysql 的基础操作

    1.建表 create table  表名( 字段一 数据类型 [列属性] , 字段二 数据类型 [列属性], ......... )[表类型][表字符集][注释]; 注意:MySQL命令终止符为分号 ...

  5. Java的反射机制一

    Java具有一定的动态性,我们可以利用反射机制,字节码操作来获得类似动态语言的特性. 动态操作对象,构造方法,属性,方法 Demo2 如何取得属性和方法以及构造器 public class Demo2 ...

  6. runtime使用总结

    runtime这个东西,项目是很少用到的,但面试又避不可少,了解其内部的机制对底层的理解还是很有必要的. 1.动态添加属性 拓展类别属性的简单实现 a.定义字面量指针 static char dyna ...

  7. Adaptive AUTOSAR 学习笔记 2 - 官方文档下载及阅读建议

    目前互联网上没有太多的 Adaptive AUTOSAR 的学习资料,官方文档是一个很不错的途径.看过官方文档才发现,目前很多关于 Adaptive AUTOSAR 的文章都是官方文档的简化翻译,不如 ...

  8. JUnit5参数化测试的几种方式

    参数化测试一直是津津乐道的话题,我们都知道JMeter有四种参数化方式:用户自定义变量.用户参数.CSV文件.函数助手,那么JUnit5有哪些参数化测试的方式呢? 依赖 JUnit5需要添加junit ...

  9. MySQL | Xtrabackup 的简介

    Xtrabackup 简介 Xtrabackup是由Percona开发的一个开源软件,可实现对InnoDB的数据备份,支持在线热备份(备份时不影响数据读写). Xtrabackup有2款主要工具,xt ...

  10. JUnit5依赖注入与测试接口

    依赖注入 以前的JUnit的类构造方法和测试方法都是不能有参数的,JUnit Jupiter有一个颠覆性的改进,就是允许它们有入参,这样就能做依赖注入了. 如果你对pytest的fixture有了解的 ...