java实用教程——组件及事件处理——布局管理(五种)

1.流式布局FlowLayout

public void pack()调整此窗口的大小,以适合其子组件的首选大小和布局。如果该窗口或其所有者仍不可显示,则两者在计算首选大小之前变得可显示。在计算首选大小之后,将会验证该Window。窗口自动适应大小,使窗口能正好显示里面所有的控件。

import java.awt.*;public class FlowLayoutDemo {public static void main(String[] args) {Frame frame = new Frame("这里测试FlowLayout");//1.通过setLayout方法设置容器的布局管理器// frame.setLayout(new FlowLayout(FlowLayout.LEFT,20,20));//frame.setLayout(new FlowLayout(FlowLayout.CENTER,20,20));frame.setLayout(new FlowLayout(FlowLayout.RIGHT,40,20));//2.添加多个按钮到frame中for (int i = 1; i <= 100; i++) {frame.add(new Button("按钮"+i));}//3.设置最佳大小,pack方法  大小适中frame.pack();frame.setVisible(true);}}

右对齐:
在这里插入图片描述居中对齐:

在这里插入图片描述左对齐:
在这里插入图片描述

2.边界布局BorderLayout
在这里插入图片描述

当改变使用 BorderLayout 的容器大小时, NORTH 、 SOUTH 和 CENTER区域水平调整,而 EAST 、 WEST 和 CENTER 区域垂直调整。使用BorderLayout 有如下两个注意点:

1. 当向使用 BorderLayout 布局管理器的容器中添加组件时 , 需要指定要添加到哪个区域中 。 如果没有指定添加到哪个区域中,则默认添加到中间区域中,其他区域空出的话,也会被中间区域占用;
2. 如果向同一个区域中添加多个组件时 , 后放入的组件会覆盖先放入的组件

3.网格布局GridLayout

在这里插入图片描述


import javax.swing.JFrame;
import java.awt.*;
import javax.swing.*;public class GridLayoutDemo extends JFrame{public static void main(String []args){GridLayoutDemo win = new GridLayoutDemo();}public GridLayoutDemo(){//1.创建对象,并且标题设置为计算器this.setTitle("这是一个计算器的界面");this.setBounds(100,200,500,500);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setVisible(true);init();}public void init(){//2.创建一个Panel对象,并且往Panel中放置一个TextField组件JPanel p1 = new JPanel();p1.add(new JTextField(30));//3.把上述的Panel放入到窗口的北侧区域this.add(p1,BorderLayout.NORTH);//4.创建一个Panel对象,并且设置其布局管理器为GridLayoutJPanel p2 = new JPanel();p2.setLayout(new GridLayout(3,5,4,4));//5.往上述Panel中,放置15个按钮,内容依次是:0,1,2,3,4,5,6,7,8,9,+,-,*,/,.for (int i = 0; i < 10; i++) {p2.add(new Button(i+""));}p2.add(new Button("+"));p2.add(new Button("-"));p2.add(new Button("*"));p2.add(new Button("/"));p2.add(new Button("."));//6.把上述Panel添加到Frame的中间区域中国this.add(p2);//7.设置Frame为最佳大小this.pack();//8.设置Frame可见this.setVisible(true);}}

在这里插入图片描述
4.卡片布局CardLayout

在这里插入图片描述
在这里插入图片描述

import javax.swing.*;
import java.awt.*;
import javax.swing.event.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class CardLayoutDemo extends JFrame{public static void main(String []args){CardLayoutDemo win = new CardLayoutDemo();}public CardLayoutDemo(){init();this.setTitle("卡片布局");this.setBounds(100,200,500,500);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setVisible(true);}public void init(){//2.创建一个String数组,存储不同卡片的名字String []str={"第一张","第二张","第三张","第四张","第五张"};//3.创建一个Panel容器p1,并设置其布局管理器为CardLayout,用来存放多张卡片JPanel panel1 = new JPanel();CardLayout cardLayout =new CardLayout();panel1.setLayout(cardLayout);//4.往p1中存储5个Button按钮,名字从String数组中取for(int i=0;i<str.length;i++){panel1.add(str[i],new JButton(str[i]));}//5.创建一个Panel容器p2,用来存储5个按钮,完成卡片的切换JPanel panel2 = new JPanel();//6.创建5个按钮,并给按钮设置监听器ActionListener listener = new ActionListener()//8.把p1添加到frame的中间区域{@Overridepublic void actionPerformed(ActionEvent arg0) {// TODO 自动生成的方法存根String Command = arg0.getActionCommand();switch(Command){case "上一张":cardLayout.previous(panel1);break;case "下一张":cardLayout.next(panel1);break;case "第一张":cardLayout.first(panel1);break;case "最后一张":cardLayout.last(panel1);break;case "第三张":cardLayout.show(panel1,"第三张");break;}}};Button b1 = new Button("上一张");Button b2 = new Button("下一张");Button b3 = new Button("第一张");Button b4 = new Button("最后一张");Button b5 = new Button("第三张");b1.addActionListener(listener);b2.addActionListener(listener);b3.addActionListener(listener);b4.addActionListener(listener);b5.addActionListener(listener);//7.把5个按钮添加到p2中panel2.add(b1);panel2.add(b2);panel2.add(b3);panel2.add(b4);panel2.add(b5);//8.把p1添加到frame的中间区域this.add(panel1);//9.把p2添加到frame的底部区域this.add(panel2,BorderLayout.SOUTH);
}
}

在这里插入图片描述5.BoxLayout盒式布局

在这里插入图片描述

在这里插入图片描述


import javax.swing.JFrame;
import javax.swing.*;
import java.awt.*;public class BoxLayoutDemo extends JFrame{public static void main(String []args){BoxLayoutDemo boxLayout = new BoxLayoutDemo();}public BoxLayoutDemo(){init();this.setTitle("BoxLayout盒式容器");this.setBounds(200,200,500,300);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setVisible(true);}public void init(){JPanel panel = new JPanel();panel.setLayout(new BoxLayout(panel,BoxLayout.Y_AXIS));//panel.setLayout(new BoxLayout(panel,BoxLayout.X_AXIS));JButton button1 = new JButton("按钮1");JButton button2 = new JButton("按钮2");panel.add(button1);panel.add(button2);this.pack();this.add(panel);}
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


import javax.swing.Box;
import javax.swing.*;
import java.awt.*;public class box extends JFrame{public static void main(String []args){box boxlayout = new box();}public box(){init();//1.创建Frame对象this.setTitle("这里测试BoxLayout");this.setBounds(200,200,500,300);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setVisible(true);}public void init(){//2.创建一个横向的Box,并添加两个按钮Box hBox = Box.createHorizontalBox();hBox.add(new JButton("水平按钮一"));hBox.add(Box.createHorizontalGlue());//两个方向都可以拉伸的间隔hBox.add(new JButton("水平按钮二"));hBox.add(Box.createHorizontalStrut(10));//水平间隔固定,垂直间方向可以拉伸hBox.add(new JButton("水平按钮3"));//3.创建一个纵向的Box,并添加两个按钮Box vBox = Box.createVerticalBox();vBox.add(new JButton("垂直按钮一"));vBox.add(Box.createVerticalGlue());//两个方向都可以拉伸的间隔vBox.add(new JButton("垂直按钮二"));vBox.add(Box.createVerticalStrut(10));//垂直间隔固定,水平方向可以拉伸vBox.add(new JButton("垂直按钮三"));//4.把box容器添加到frame容器中this.add(hBox, BorderLayout.NORTH);this.add(vBox);//5.设置frame最佳大小并可见}}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/306472.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

个人博客前端模板_腾讯前端开发工程师,教你极速搭建一个个人博客网站

作者&#xff1a; bookerzhao&#xff0c;腾讯 CSIG web前端开发工程师Github 为开源项目提供了用于静态页面展示的 Pages 服务&#xff0c;很多开发者都在上面托管了自己的静态网站和博客&#xff0c;不少开源项目的案例和文档页面也采用了这种方式。不过由于 Pages 的 CDN 节…

云原生时代 给予.NET的机会

.NET诞生于与Java的竞争&#xff0c;微软当年被罚款20亿美元。Java绝不仅仅是一种语言&#xff0c;它是COM的替代者&#xff01;而COM恰恰是Windows的编程模型。而Java编程很多时候比C编程要容易的多&#xff0c;更致命的是他是跨平台的。微软所推行.NET战略&#xff0c;并且C#…

java实用教程——组件及事件处理——布局的一个小实例

import javax.swing.*; import java.awt.*;public class BasicComponentDemo {Frame frame new Frame("这里测试基本组件");//定义一个按钮Button ok new Button("确认");//定义一个复选框组CheckboxGroup cbg new CheckboxGroup();//定义一个单选框&am…

非极大值抑制_非极大值抑制(non-maximum suppression)

摘自https://blog.csdn.net/qq_38906523/article/details/80195119摘自https://blog.csdn.net/xiexu911/article/details/80609298非极大值抑制NMS在目标检测&#xff0c;定位等领域是一种被广泛使用的方法。对于目标具体位置定位过程&#xff0c;不管是使用sliding Window还是…

TIOBE12月榜单:Java重回第二,Python有望四连冠年度语言

喜欢就关注我们吧&#xff01;文|白开水TIOBE 公布了 2020 年 12 月的编程语言排行榜。TIOBE 将在下个月公布 2020 年的年度编程语言&#xff0c;一年内排名率增长最高的编程语言将获得这一称号。目前&#xff0c;Python 以 1.90% 数据遥遥领先。其次分别是 C&#xff08;0.71%…

excel怎么在柱状图上加超链_如何让你的年终总结更符合领导心意,高薪员工必备的excel技能...

临近年底了&#xff0c;好多人都在写年终总结了&#xff0c;惯有的模式就是写一写这一年都做了哪些工作&#xff0c;有什么成绩&#xff0c;未来将如何完善等等......但是如何反应自己一年以来的成绩呢&#xff0c;如果单单是以文字的形式表述怕是不能让领导满意&#xff0c;甚…

java实用教程——组件及事件处理——对话框(dialog)

对话框&#xff1a; import java.awt.event.ActionEvent;import java.awt.event.ActionListener; import java.awt.*; import java.awt.event.*;public class DialogDemo1 {public static void main(String[] args) {Frame frame new Frame("这里测试Dialog");Di…

Vue 凭什么成为 2020 年的一匹黑马

Vue 在前端开发中的火爆程度远超 React 和 Angular &#xff0c;无论是 BAT 等大厂&#xff0c;还是小型初创公司&#xff0c;Vue 都有着广泛的应用&#xff0c;其相关技术原理也是面试的必考知识点。Vue 的优势太过明显&#xff1a;基于 HTML 的模板语法&#xff0c;响应式的更…

python——学习笔记1

推荐阅读&#xff1a; 爆肝十二万字《python从零到精通教程》 Python菜鸟教程 1.python 的输入输出&#xff1a; 输入&#xff1a;input() 输出&#xff1a;print() 输出不换行&#xff1a;print(x,end"") 数据要和字符串同时输出的时候需要将数据转化为字符串类…

开源C# Winform控件库《SunnyUI》强力推荐

本站(https://dotnet9.com)曾介绍过一款Winform开源控件库《HZHControls》&#xff0c;文章发布后不少朋友热情的咨询相关控件库信息&#xff0c;由此看来Winform在大家心中的地位还是挺高的。今天小编再分享一款新鲜出炉的 Winform 控件库库——SunnyUI&#xff0c;一起跟 Dot…

python——学习笔记2

python的数据结构 字符串&#xff1a; 字符串小写转大写&#xff1a; 字符串大写转小写&#xff1a; 删除空格&#xff1a; 空白是实际文本之前和/或之后的空间&#xff0c;通常您想删除这个空间。 strip()方法从开头或结尾删除任何空格&#xff1a; 替换字符串: replace()方…

庐山真面目之一 微服务的简介和技术栈

一、简介 这些年软件的设计规模越来越庞大&#xff0c;业务需求也越来越复杂&#xff0c;针对系统的性能、高吞吐率、高稳定性、高扩展等特性提出了更高的要求。可以说业务需求是软件架构能力的第一推动力&#xff0c;由于这些因素导致了软件架构思想和相关技术也在发生…

.net 读蓝牙数据_Linux内核曝严重蓝牙漏洞,影响多个版本

谷歌安全研究人员在Linux Kernel中发现了一组蓝牙漏洞(BleedingTooth)&#xff0c;该漏洞可能允许攻击者进行零点击攻击&#xff0c;运行任意代码或访问敏感信息。BleedingTooth漏洞分别被命名为CVE-2020-12351&#xff0c;CVE-2020-12352和CVE-2020-24490。其中最严重的漏洞是…

python——学习笔记3

日期&#xff1a; Python 日期和时间 函数&#xff1a; python 传不可变对象实例

算法题目——电梯(HDU-1008)

题目链接&#xff1a;HDU-1008 上楼&#xff1a;输入俩楼层之差 * 6s 停留层的5s 下楼&#xff1a;输入俩楼层之差 * 4s 停留层的5s #include<iostream> #include<vector>using namespace std; int main() {vector<int> vec;//用于存储每次的楼层数 vector…

.NET 云原生架构师训练营(模块二 基础巩固 引入)--学习笔记

2.1 引入http协议web server && web application framework.net 与 .net core asp .net coreweb api 示例CS&#xff1a;客户端-服务器BS&#xff1a;浏览器-服务器2.1.1 http协议请求过程消息结构请求方法状态码header请求过程1.URL解析2.DNS查询3.TCP连接4.处理请求5…

spss因子分析结果解读_因子分析巴特利特球形度检验结果解读

因子分析时&#xff0c;一般根据KMO和巴特利特检验的结果来判断数据是否适合做因子分析。那么巴特利特检验结果如何解读呢&#xff1f;既然是假设检验&#xff0c;必定有原假设和备择假设&#xff0c;只需要搞清楚假设是什么&#xff0c;也就知道应该如何解读了。百度百科上是这…

算法题目——质量(POJ-1862)

题目链接&#xff1a;POJ-1862 再说一遍&#xff1a;STL大法好&#xff0c;贪心算法 优先队列(大根堆) #include<iostream> #include<queue> #include<math.h> using namespace std;int main() {priority_queue<float> pqueue;int n;cin>>n;fl…

理解 redis 中的 集合对象类型

这篇我们来看看Redis五大类型中的第四大类型&#xff1a;集合类型&#xff0c;集合类型还是蛮有意思的&#xff0c;第一个是因为它算是只使用key的Dictionary简易版&#xff0c;这样说来的话&#xff0c;它就比Dictionary节省很多内存消耗&#xff0c;第二个是因为它和C#中的Ha…

评估服务基础性能应该参考那些指标?

当谈到网络服务性能的时候&#xff0c;很多人都会采用一些单一性的指标数据作为性能参考&#xff0c;如支持多少在线&#xff0c;能跑到多少带宽等&#xff1b;实际上这些单一性的指标数据并不能反映服务的基础性能&#xff0c;毕竟应用场景是多样性的&#xff1b;那更好判断一…