java 图形化小工具Abstract Window Toolit ;布局管理器FlowLayout流式布局;BorderLayout边界布局;GridLayout网格布局;CardLayou重叠卡片布局;BoxLayout方框布局;绝对定位
1、FlowLayout流式布局管理器:
import java.awt.*;
import java.util.concurrent.Flow; /**
* @ClassName FlowLayOutTest
* @projectName: object1
* @author: Zhangmingda
* @description: XXX
* date: 2021/4/29.
*/
public class FlowLayOutTest {
public static void main(String[] args) {
Frame frame = new Frame("FlowLayOut测试");
frame.setLayout(new FlowLayout(FlowLayout.LEFT,10,20));
for (int i=0; i<100; i++){
frame.add(new Button("button" +i));
}
frame.setBounds(100,100,400,600);
frame.setVisible(true);
}
}

2、BorderLayout 布局管理器
import java.awt.*; /**
* @ClassName BorderLayOutTest
* @projectName: object1
* @author: Zhangmingda
* @description: XXX
* date: 2021/4/29.
*/
public class BorderLayOutTest {
public static void main(String[] args) {
Frame frame = new Frame();
/**
* Frame默认的LayOut 就是BorderLayout 而且是.CENTER
*/
frame.add(new Button("EASE"),BorderLayout.EAST);
frame.add(new Button("WEST"),BorderLayout.WEST);
frame.add(new Button("NORTH"),BorderLayout.NORTH);
frame.add(new Button("NORTH"),BorderLayout.SOUTH);
frame.add(new Button("CENTER"),BorderLayout.CENTER);
frame.setBounds(100,100,400,400);
frame.setVisible(true);
}
}

BorderLayout最多放5个组件,如果放置少于5个组件,对应的位置不会出现空白,会被相邻的组件占有:
3、GridLayout 布局管理器
import java.awt.*;
import java.util.Arrays;
import java.util.List; /**
* @ClassName GridLayoutTEST
* @projectName: object1
* @author: Zhangmingda
* @description: XXX
* date: 2021/4/29.
*/
public class GridLayoutTEST {
public static void main(String[] args) {
Frame frame = new Frame("计算器");//窗口
frame.add(new TextField(30),BorderLayout.NORTH);//文本框
Panel panel = new Panel();//容器
panel.setLayout(new GridLayout(3,5,4,5));//设置行列数、水平间隙、垂直间隙
List<String> btnTxts = (List<String>) Arrays.asList(
"0", "1", "2", "3", "4",
"5", "6", "7", "8", "9",
"+", "-", "*", "/", "="
);
btnTxts.forEach(string -> panel.add(new Button(string))); //容器添加按钮
frame.add(panel); //窗口添加容器
frame.pack();//以最佳窗口大小展示
frame.setLocation(500,200); //窗口走上角相对屏幕的位置
frame.setVisible(true);//显示窗口
}
}

4、CardLayout 布局管理器
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Arrays;
import java.util.List; /**
* @ClassName CardLayoutTest
* @projectName: object1
* @author: Zhangmingda
* @description: XXX
* date: 2021/4/29.
*/
public class CardLayoutTest {
public static void main(String[] args) {
/**
* 窗口
*/
Frame frame = new Frame("CardLayout");
/**
* 上半部分
*/
Panel panel = new Panel();
CardLayout cardLayout = new CardLayout();
panel.setLayout(cardLayout); //设置容器布局
List<String> list = Arrays.asList("第一张","第二张","第三张","第四张","第五张");
list.forEach(string -> {
Button button = new Button(string);
panel.add(button); //添加按钮
cardLayout.addLayoutComponent(button,string); // cardLayout.show 展示时,需要提前设置button和名称的对应关系
}); /**
* 下部分
*/
Panel bottomPanel = new Panel();
List<String> btnNames = Arrays.asList("第一张","上一张","第三张","下一张","最后一张");
ActionListener onBottomButtonClick = new ActionListener() {
@Override
public void actionPerformed(ActionEvent actionEvent) {
switch (actionEvent.getActionCommand()){
case "第一张":
cardLayout.first(panel);
break;
case "上一张":
cardLayout.previous(panel);
break;
case "下一张":
cardLayout.next(panel);
break;
case "最后一张":
cardLayout.last(panel);
break;
case "第三张":
cardLayout.show(panel,"第三张");
}
}
};
for (String string : btnNames){
Button button = new Button(string);
button.addActionListener(onBottomButtonClick);
bottomPanel.add(button);
} frame.add(panel); //添加堆叠卡片容器
frame.add(bottomPanel,BorderLayout.SOUTH); //添加下面按钮容器,同时设置边界样式
frame.pack(); //自调节窗口大小到最优
frame.setLocation(400,200); //窗口相对于屏幕左上角绝对位置
frame.setVisible(true); //显示窗口
// panel.add();
}
}

5、BoxLayout布局管理器

import javax.swing.*;
import java.awt.*; /**
* @ClassName BoxLayoutTest
* @projectName: object1
* @author: Zhangmingda
* @description: XXX
* date: 2021/4/30.
*/
public class BoxLayoutTest {
public static void main(String[] args) {
Frame frame = new Frame("Box容器");
//创建一个水平方向的BOX容器
Box horizontal = Box.createHorizontalBox();
horizontal.add(new Button("水平1"));
horizontal.add(Box.createHorizontalGlue()); //水平间隙
horizontal.add(new Button("水平2"));
horizontal.add(Box.createHorizontalStrut(10));
horizontal.add(new Button("水平3"));
frame.add(horizontal,BorderLayout.NORTH); //创建一个垂直方向的Box容器
Box vertical = Box.createVerticalBox();
vertical.add(new Button("垂直1"));
vertical.add(Box.createVerticalGlue());//垂直间隙
vertical.add(new Button("垂直2"));
vertical.add(Box.createVerticalStrut(10)); //固定垂直间隙
vertical.add(new Button("垂直3"));
frame.add(vertical);
frame.setLocation(400, 200);
frame.pack(); //自动配置最优大小
frame.setVisible(true);
}
}
6、绝对定位frame.setLayout(null);
import java.awt.*; /**
* @ClassName NullLayoutTest
* @projectName: object1
* @author: Zhangmingda
* @description: XXX
* date: 2021/4/29.
*/
public class NullLayoutTest {
public static void main(String[] args) {
Frame frame = new Frame("绝对定位");
Button button = new Button("first button");
button.setBounds(20,30,90,30);
Button button1 = new Button("second button");
button1.setBounds(100,100,90,30); frame.setLayout(null); //绝对定位要清除默认布局BorderLayout
frame.add(button);frame.add(button1);
frame.setBounds(400,200,400,400);
frame.setVisible(true);
}
}

java 图形化小工具Abstract Window Toolit ;布局管理器FlowLayout流式布局;BorderLayout边界布局;GridLayout网格布局;CardLayou重叠卡片布局;BoxLayout方框布局;绝对定位的更多相关文章
- java 图形化小工具Abstract Window Toolit
老掉牙的历史 Java1.0在发布的时候,就为我们提供了GUI操作的库,这个库系统在所有的平台下都可以运行,这套基本的类库被称作抽象窗口工具集(Abstract Window Toolit),简称 ...
- java 图形化小工具Abstract Window Toolit :画笔Graphics,画布Canvas(),弹球小游戏
画笔Graphics Java中提供了Graphics类,他是一个抽象的画笔,可以在Canvas组件(画布)上绘制丰富多彩的几何图和位图. Graphics常用的画图方法如下: drawLine(): ...
- java 图形化小工具Abstract Window Toolit 事件处理
事件处理设计到了三个对象: EventSource(事件源):事件发生的场所,通常就是各个组件,例如按钮.窗口,菜单等. Event (事件封装了GUI组件上发生的特定事情(通常就是一次用户操作).如 ...
- java 图形化小工具Abstract Window Toolit 常用组件:对话框Dialog FileDialog
对话框 Dialog是Window类的子类,是1个容器类,属于特殊组件,对话框是可以独立存在的顶级窗口,因此用法与普通窗口的用法几乎完全一样.但对话框有如下两点需要注意. (1),对话框通常依赖于其他 ...
- java 图形化小工具Abstract Window Toolit ImageIO缩放图片,添加水印
实现步骤: 读取图像Image src = ImageIO.read 创建目标图像BufferedImage distImage = new BufferedImage(dstWidth, dstHe ...
- java 图形化小工具Abstract Window Toolit 画笔 处理位图
具体编程来处理位图 知识点: 实现逻辑: 画板上的图片 new BufferedImage(canvasWidth,canvasHeight,BufferedImage.TYPE_INT_BGR); ...
- java 图形化小工具Abstract Window Toolit 菜单项
AWT 中的菜单由如下几个类组合而成 MenuBar: 菜单条,菜单的容器. Menu: 菜单组件,菜单项的容器,它也是Menultem的子类,所以可作为菜单项使用. PopupMenu: 上下文菜单 ...
- java 图形化小工具Abstract Window Toolit 常用组件
基本组件 Button: 按钮,可接受单击操作 Canvas: 用于绘图的画布 Checkbox: 复选框组(也可变成单选框组件) CheckboxGroup: 用于将多个checkbox组件组合成一 ...
- 5、Java Swing布局管理器(FlowLayout、BorderLayout、CardLayout、BoxLayout、GirdBagLayout 和 GirdLayout)
5.Java-Swing常用布局管理器 应用布局管理器都属于相对布局,各组件位置可随界面大小而相应改变,不变的只是其相对位置,布局管理器比较难以控制,一般只在界面大小需要改是才用,但即使这 ...
随机推荐
- 从ApacheTomcat架构谈面试到源码编译环境v10.0.12
概述 开启博客分享已近三个月,感谢所有花时间精力和小编一路学习和成长的伙伴们,有你们的支持,我们继续再接再厉 **本人博客网站 **IT小神 www.itxiaoshen.com 定义 Tomcat官 ...
- 解决texlive化学式转换镜像经常偶发性进程堆积导致卡顿问题
前言 之前在 使用Python定时清理运行超时的pdflatex僵尸进程 博文中我采用python脚本开启定时任务清理pdflatex僵尸进程,线上4u2G的k8s pod部署了3个,pdflatex ...
- 05 Windows安装python3.6.4+pycharm环境
windows安装python3.6.4环境 使用微信扫码关注微信公众号,并回复:"Python工具包",免费获取下载链接! 一.卸载python环境 卸载以下软件: 二.安装py ...
- euerka总结
一.euerka的基本知识 1. 服务治理 Spring Cloud 封装了 Netflix 公司开发的 Eureka 模块来实现服务治理 在传统的rpc远程调用框架中,管理每个服务与服务之间依赖关系 ...
- Yarn的Tool接口案例
目录 Yarn的Tool接口案例 Tool接口环境准备 1 新建Maven项目YarnDemo 编写代码 打包jar上传到集群 Yarn的Tool接口案例 Tool接口环境准备 之前写wordcoun ...
- Swift-技巧(十一)重写运算符
摘要 基础数据的运算可以直接使用四则运算符.在 Swift 中也可以通过重写四则运算符的方式,让 struct 或者 class 创建的结构体或者对象也能像基础数据那样直接使用四则运算符. Swift ...
- 学习java 7.20
学习内容: Stream流 Stream流的生成方式 中间操作方法 终结操作方法 Stream流的收集操作 类加载 类加载器的作用 将.class文件加载到内存中,并为之生成对应的java.lang. ...
- C/C++ Qt 数据库与ComBox多级联动
Qt中的SQL数据库组件可以与ComBox组件形成多级联动效果,在日常开发中多级联动效果应用非常广泛,例如当我们选择指定用户时,我们让其在另一个ComBox组件中列举出该用户所维护的主机列表,又或者当 ...
- 断言(assert)简介
java中的断言assert的使用 一.assertion的意义和用法 J2SE 1.4在语言上提供了一个新特性,就是assertion功能,他是该版本再Java语言方面最大的革新. 从理论上来说,通 ...
- Flume对接Kafka
目录 一.简单实现 1)flume的配置文件 二.自定义interceptor(使用kafka sink) 1)自定义 flume 拦截器 2)编写 flume 的配置文件 3)创建topic 4)启 ...