java GUI编程之布局控制器(Layout)实例分析
作者:qq_42412646 发布时间:2023-11-23 13:10:35
标签:java,GUI,布局控制器,Layout
本文实例讲述了java GUI编程之布局控制器(Layout)。分享给大家供大家参考,具体如下:
布局控制器,是用来系统自动分配各个component在window内部是怎么排布的;默认为FlowLayout,即挨个排序。FlowLayout是Panel的
instance 1:FlowLayout
import java.awt.*;
public class TestLayout {
public static void main(String[] args) {
Frame f = new Frame();
Button b1 = new Button("ok");
Button b2 = new Button("open");
Button b3 = new Button("change");
f.setBackground(Color.BLUE);
f.setBounds(100, 100, 300, 300);
f.setLayout(new FlowLayout());
f.setResizable(true);
f.add(b1);
f.add(b2);
f.add(b3);
f.setVisible(true);
}
}
instance 2:BorderLayout
import java.awt.*;
public class TestBorderLayout {
public static void main(String[] args) {
Frame f = new Frame("Border Layout");
Button bn = new Button("Bn");
Button bs = new Button("Bs");
Button be = new Button("Be");
Button bw = new Button("Bw");
Button bc = new Button("Bc");
// f.add(bw,"West");
// f.add(be,"East");
// f.add(bn,"North");
// f.add(bs,"South");
// f.add(bc,"Center");
// f.setLayout(new BordorLayout());
f.add(bn,BorderLayout.NORTH);
f.add(bs,BorderLayout.SOUTH);
f.add(bw,BorderLayout.WEST);
f.add(be,BorderLayout.EAST);
f.add(bc,BorderLayout.CENTER);
f.setSize(200, 200);
f.setVisible(true);
}
}
BorderLayout把整个界面划分为东西南北中五个区域块;其中BorderLayout.NORTH等是int类型的数据,为一个常量。
instance 3:GridLayout
import java.awt.*;
public class TestGridLayout {
public static void main(String[] args) {
Frame f = new Frame();
Button b1 = new Button("b1");
Button b2 = new Button("b2");
Button b3 = new Button("b3");
Button b4 = new Button("b4");
Button b5 = new Button("b5");
Button b6 = new Button("b6");
f.setLayout(new GridLayout(3,2));
f.add(b1);
f.add(b2);
f.add(b3);
f.add(b4);
f.add(b5);
f.add(b6);
f.pack();
f.setSize(200, 200);
f.setVisible(true);
}
}
注:当调用Layout后,其内部的component的大小和位置由系统(布局管理器自主分配),而无法认为的设计。而pack()方法是用来显示各个组件的。
instance 4:综合实例
import java.awt.*;
public class TestedLayout {
public static void main(String[] args) {
Frame f = new Frame("GUI");
f.setLayout(new GridLayout(2,1));
Panel p1 = new Panel(new BorderLayout());
Panel p2 = new Panel(new BorderLayout());
Panel p11 = new Panel(new GridLayout(2,1));
Panel p22 = new Panel(new GridLayout(2,2));
Button b1 = new Button("button");
Button b2 = new Button("button");
Button b3 = new Button("button");
Button b4 = new Button("button");
Button b5 = new Button("button");
Button b6 = new Button("button");
Button b7 = new Button("button");
Button b8 = new Button("button");
Button b9 = new Button("button");
Button b10 = new Button("button");
p1.add(b1,BorderLayout.WEST);
p1.add(b2,BorderLayout.EAST);
p2.add(b3,BorderLayout.WEST);
p2.add(b4,BorderLayout.EAST);
p11.add(b5);
p11.add(b6);
p22.add(b7);
p22.add(b8);
p22.add(b9);
p22.add(b10);
p1.add(p11,BorderLayout.CENTER);
p2.add(p22,BorderLayout.CENTER);
f.add(p1);
f.add(p2);
f.setBounds(100, 100, 400, 400);
f.setVisible(true);
}
}
注:一个new等于创建了一个button对象,分配了一个内存空间。即使是完全相同的button即同样的大小名称等,其终究还是哪一个,当其被反复添加时,仅仅是相当于给其换了位置。其和变量不同,并不是单纯的复制,而是内存和对象的指向问题。
希望本文所述对大家java程序设计有所帮助。
来源:https://blog.csdn.net/qq_42412646/article/details/102168983
0
投稿
猜你喜欢
- 很久之前也写过一篇使用Jitpack发布Android开源库的文章,详见Android发布项目到jitpack的完整步骤近来因为工作原因,又
- 文章来源:aspcn 作者:孙雯重复和并发服务器这个应用程序被当作一个重复的服务器.因为它只有在处理完一个进程以后才会接受另一个连接.更多的
- 本文实例为大家分享了Unity实现攻击范围检测并绘制检测区域的具体代码,供大家参考,具体内容如下一、圆形检测using System.Col
- 对这种懒加载问题,最后的做法是利用Spring提供的一个针对Hibernate的一个支持类,其主要意思是在发起一个页面请求时打开Hibern
- 实现文档在线预览的方式除了上篇文章《文档在线预览(一)通过将txt、word、pdf转成图片实现在线预览功能》说的将文档转成图片的实现方式外
- 阿里终面在线编程题,写出来与大家分享一下 有一个单向链表
- 1.设置url-pattern为*.do(最为常见的方式)只要你的请求url中包含配置的url-pattern,该url就可以到达Dispa
- 在Web开发过程中离不开数据的交互,这就需要规定交互数据的相关格式,以便数据在客户端与服务器之间进行传递。数据的格式通常有2种:1、xml;
- c#调用surfer软件,添加应用的方法:1.在项目文件上右键->添加引用2.选择COM标签页3.找到Surfer 9 type li
- 一、Servlet简介Servlet是sun公司提供的一门用于开发动态web资源的技术。Sun公司在其API中提供了一个servlet接口,
- 原网页:JavaGuideJVM在执行Java程序过程中会把它管理的内存划分成若干个不同的数据区域。JDK1.8和之前的版本略有不同,下面会
- 本文主要是通过一个银行用户取钱的实例,演示java编程多线程并发处理场景,具体如下。从一个例子入手:实现一个银行账户取钱场景的实例代码。第一
- 问题背景: 我要在一个表单里同时一次性提交多名乘客的个人信息到SpringMVC,前端HTML和SpringMVC Controller里该
- state:比较常用,各种状态都可以用它,但是它更着重于一种心理状态或者物理状态。Status:用在人的身上一般是其身份和地位,作“状态,情
- 已知字符串“aabbbcddddeeffffghijklmnopqrst”编程找出出现最多的字符和次数,要求时间复杂度小于O(n^2)/**
- 介绍Dubbo 是一款高性能、轻量级的 Java RPC 框架,由阿里巴巴开源并贡献至 Apache 基金会。它能够提供服务的注册与发现、负
- 一、使用Json.NetJson.Net是支持序列化和反序列化DataTable、DataSet、Entity Framework和Enti
- 继承什么是继承呢?继承(Inheritance)是一种联结类与类的层次模型。指的是一个类(称为子类、子接口)继承另外的一个类(称为父类、父接
- 1. 基本用法<dependency> <groupId>org.redisson</groupI
- 本文主要介绍了SpringBoot配置文件中的明文密码如何加密保存,读取以及对于自定义的加密算法加密的参数如何保存和读取。背景为了安全的需要