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最佳大小并可见}}

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

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

    import javax.swing.*; import java.awt.*;public class BasicComponentDemo {Frame frame = new Frame(&qu ...

  2. java实用教程——组件及事件处理——对话框(消息对话框,输入对话框,确认对话框)

    消息对话框:(这个对话框提供一些信息) 无模式:可多线程的执行 有模式:用户必须处理这个一个对话框.必须解决这个问题后才可以继续相处下去 对话框分为无模式和有模式两种.如果一个对话框 是有模式的对话框 ...

  3. java实用教程——组件及事件处理——ActionEvent事件

    事件源: 文本框,按钮,菜单项,密码框,单选按钮 注册监视器: 能够触发ActionEvent事件的组件使用方法 addActionListener(ActionListener listener) ...

  4. java实用教程——组件及事件处理——设置组件的位置(相对于窗口具体位置和布局)

    1: 相对于窗口的具体位置 关键点: JButton组件添加到JPanel时,如果想自己位置,需要对JPanel进行如下设置,才能自定义按钮位置 需要将组件添加到画板上去,才可以设置组件的相对具体位置 ...

  5. java实用教程——组件及事件处理——对话框(颜色对话框,自定义对话框)

    颜色对话框: 可以用javax.swing包中的JColorChooser类的静态方法 public staticColorshowDialog (Component component, Strin ...

  6. java实用教程——组件及事件处理——ItemEvent事件(设置字体类型)

    ItemEvent事件源: 选择框,下拉列表都可以触发ItemEvent事件 注册监视器: 能够触发ItemEvent事件的组件使用addItemListener(ItemListener liste ...

  7. java实用教程——组件及事件处理——概述

    swing包是awt的子类,swing有更强的实用性 JFrame是底层容器--窗口,JPanel是中间容器--画板,JButton等其他的称为组件-- 按钮 布局:把组件添加到容器中时,希望控制组件 ...

  8. java实用教程——组件及事件处理——MouseEvent事件

    MouseEvent事件 任何组件上都可以发生鼠标事件,如鼠标进入组件.退出组件.在组件上方单击鼠标.拖动鼠标等都触发鼠标事件,即导致MouseEvent类自动创建一个 事件对象,事件源注册监视器的方 ...

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

    对话框: import java.awt.event.ActionEvent;import java.awt.event.ActionListener; import java.awt.*; impo ...

最新文章

  1. “不给钱就删库”的勒索病毒, 程序员该如何防护?
  2. webstorm前端调用后端接口_一篇前端同学对后端接口的吐槽
  3. 在《糖豆人》身上,我们看到了竞技游戏火爆的六大因素
  4. 16进制的两位数转换不了 matlab_跟小黑学漏洞利用开发之16进制字符转换
  5. 基于文本知识库的强化学习技术——Learning to Win by Reading Manuals in a Monte-Carlo Framework
  6. BCC实例(如何修改NS解析方式为百度智能云解析) - 解答篇
  7. SAP License:标准层次无法创建
  8. Linux cc 和 gcc 的区别概括介绍
  9. UCIPC2012-Red/Blue Spanning Tree解题报告
  10. 玩转MacBook的五个使用技巧
  11. 来自雨林木风的Linux发行版: Ylmf Linux
  12. 拉格朗日法建立动力学方程
  13. hadoop-hive安装
  14. unit10-Cookie、Session
  15. 怎么扩展服务器内存?
  16. Springboot整合redis切库问题
  17. 智能玩具存在的安全隐患须知
  18. 技术干货 | 基于 MindSpore 实现图像分割之平均表面距离
  19. 突然断电对oracle的影响吗,当ORACLE突然断电,重新启动过程发生了哪些事?
  20. win10计算机的运行在哪里打开,Win10系统教程 Win10系统运行在哪里打开?

热门文章

  1. 计算机专业学教育技术优势,西南交通大学教育技术学(040110)专业介绍
  2. 滚动加载数据 php,无刷新动态加载数据 滚动条加载适合评论等页面
  3. mysql数据库项目化教程郑小蓉_MySQL数据库项目化教程(高等职业教育“十三五”规划教材(软件技术专业))...
  4. c#队列取值_在队列的开头获取对象– C#中的窥视操作
  5. [转]白话阿里巴巴Java开发手册高级篇
  6. 利用Matlab拟合时序植被生长季曲线,并求解物候参数
  7. C语言试题四十三之求出ss所指字符串中指定字符的个数,并返回此值。
  8. Android之Fatal Exception: org.greenrobot.greendao.DaoException: Could not init DAOConfig
  9. Flutter之window系统下配置开发环境以及在Android Studio里面运行hello word
  10. Android studio之迁移定制出现Installation failed with message Failed to finalize session