java布局学习 (三)

前文已经讲了常用的4个布局了,今天再介绍最后的三个布局:

5、CardLayout

6、BoxLayout

7、空白布局null

(五)CardLayout   纸牌布局

  首先这种布局不是二维布局,而是一种伪三维的布局。

  容器将所有的二维控件比作一张张的纸牌(card),放在容器当中。然后根据需要,返回不同位置的控件(纸牌)。但是从界面样式上看,这就是简单的panel。

构造函数有如下两种:

1  CardLayout()
2  CardLayout(int hgap, int vgap) //参数表示卡片与边界的距离

同时提供了五个最常用的API:

target是容器,调用对应的(防盗连接:本文首发自http://www.cnblogs.com/jilodream/ )API会显示容器内对应的卡牌

first(Container target)//第一张卡牌

last(Container target)//最后一张卡牌

previous(Container target)//前一张卡牌

next(Container target)//后一张卡牌

show(Container target, String name)//根据卡牌(控件)的名字,找到指定的卡牌,并且显示

效果如图:

对每一个button绑定一个事件,这个事件可以调用容器中显示的页面。

容器中的控件也可以绑定其他事件,不单单是用来显示的。

 (六)BoxLayout 箱布局

  GridLayout功能不够强大,GridBagLayout使用起来又过于繁琐。为此Swing专门提出箱布局BoxLayout。

构造函数如下:

1 BoxLayout(Container target, int axis)

Container target是要设置的容器,

axis 代表方向,是横向还是纵向

BoxLayout的效果如下图:

BoxLayout往往与Box容器一同使用:

CreateHorizontalBox 创建一个水平布局的Box容器
CreateVerticalBox 创建一个垂直布局的Box容器

在Box内部我们可以定义三种空白组件,来调整容器内部的布局:

Glue (橡胶):组件可以弹性的收缩或扩张(在某一个方向上)

Strut(支架):组件是固定大小的(在某一个方向上)

RigidArea(刚性区域)是固(防盗连接:本文首发自http://www.cnblogs.com/jilodream/ )定大小的一片刚性区域

通过这三个空白组件,填充在其他组件的间隔位置,保证窗体在拖动时,组件的size和location可以友好的显示出来。

(七)空白布局null

空白布局是什么呢,就是GUI的界面不采取任何布局,组件在GUI界面中使用的是绝对定位。

采用如下的形式,移除原有的布局形式:

1 setLayout(null)

同时通过如下方法设置坐标和尺寸:

1 setSize()   //设置尺寸
2 setBounds()  //设置坐标和尺寸

这种方式是通过直接设定坐标和尺寸的暴(防盗连接:本文首发自http://www.cnblogs.com/jilodream/ )力的形式来进行布局的。所以设置起来非常灵活,控件之间的的距离和大小不存在互相影响的情况。但是由于这种方式采用的都是绝对的数据,这也导致GUI界面在跨平台的场景下,显得非常被动。

时间: 2024-08-24 23:07:35

java布局学习 (三)的相关文章

java布局学习 (一)

Java 程序通过jvm可以很好的移植到其他平台上,但是java 生成的图形界面样式,在不使用布局的情况下,往往需要重新设定大小,才能在新的平台上调整到最佳样式.这是由于组件的最佳大小 往往是与平台相关的.不同平台上,相同的内容大小可能不一样.java专门提供了LayoutManager(布局管理器)来更好的进行布局管理,使组件的大小和位置调整到最佳.(包括控件无遮挡,无冗余空间). (一) 再开始讲解布局之前,这里先普及一下关于布局中的一些常用知识. 1.容器 Container 做过图形界面

java布局学习 (二)

前文中介绍了FlowLayout和BorderLayout 本文我们将会继续介绍java中的布局方式 (3)GridLayout 网格布局 这种布局会将整个容器划分成M行*N列的网格. 如下图:                                                                                                                                                        

Java反射学习三

反射与数组 java.lang.Array类提供了动态创建和访问数组元素的各种静态方法. 例程ArrayTester1类的main()方法创建了一个长度为10的字符串数组,接着把索引位置为5的元素设为“hello”,然后再读取索引位置为5的元素的值. import java.lang.reflect.Array; public class ArrayTester1 { public static void main(String[] args) throws Exception { Class<

java nio学习三:NIO 的非阻塞式网络通信

一.阻塞和非阻塞 传统的 IO 流都是阻塞式的.也就是说,当一个线程调用 read() 或 write()时,该线程被阻塞,直到有一些数据被读取或写入,该线程在此期间不能执行其他任务.因此,在完成网络通信进行 IO 操作时,由于线程会阻塞,所以服务器端必须为每个客户端都提供一个独立的线程进行处理,当服务器端需要处理大量客户端时,性能急剧下降.Java NIO 是非阻塞模式的.当线程从某通道进行读写数据时,若没有数据可用时,该线程可以进行其他任务.线程通常将非阻塞 IO 的空闲时间用于在其他通道上

java理论基础学习三

Eclipse 是一个开放源码的.基于java的可扩展开发平台 最初主要用来java语言开发,但目前也有人通过插件使其作为其它计算机语言比如C++.python.安卓的开发 下载地址:http://eclipse.org/downloads 包 Package jdk常用的包 生成API文档 javadoc 项目右击-->Export-->java-->javadoc

Java设计模式学习三-----工厂模式

工厂模式 工厂模式(Factory Pattern)是Java中最常用的设计模式之一.这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式. 在工厂模式中,创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象. 工厂模式的思路:定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行.使用过程中做好接口选择. 优点:1.一个调用者向创建一个对象,只要知道名称就可以了.2.扩展性高,如果想增加一个产品,只要扩展一个工厂

java笔记学习三

学习代码记录 /** * 随机生成指定长度的字符串 * * @param * @param lengthOfString * @return 纯字母字符串 */ public static String getRndStrByLen(int lengthOfString) { int i, count = 0; final String chars = "A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z"; String[] cha

Java IO学习--(三)通道

Java IO中的管道为运行在同一个JVM中的两个线程提供了通信的能力.所以管道也可以作为数据源以及目标媒介. 你不能利用管道与不同的JVM中的线程通信(不同的进程).在概念上,Java的管道不同于Unix/Linux系统中的管道.在Unix/Linux中,运行在不同地址空间的两个进程可以通过管道通信.在Java中,通信的双方应该是运行在同一进程中的不同线程. 通过Java IO创建管道 可以通过Java IO中的PipedOutputStream和PipedInputStream创建管道.一个

java 8 学习三(Stream API)

集合讲的是数据,流讲的是计算. 流的数据处理功能支持类似于数据库的操作,以及函数式编程语言中的常用操作,如filter. map. reduce. find. match. sort等. 流操作可以顺序执行,也可并行执行. 两大特性: 1.流水线 2.内部迭代