组件不能单独存在,必须放置于容器中,组件在容器中的位置和尺寸是由布局管理器来决定的

  1. FlowLayout(流式布局管理器)
  2. BoderLayout(边界布局管理器)
  3. GridLayout(网格布局管理器)
  4. GridBagLayout(网格包布局管理器)
  5. CardLayout(卡片布局管理器)

1.FlowLayout

容器会将组件按照添加顺序,从左到右放置,到达边界时,自动换行

import java.awt.*;public class Example {public static void main(String[] args) {//创建一个窗体final Frame f=new Frame("Flowlayout");//设置布局管理器为FlowLayout,所有组件左对齐,水平间距20,垂直间距30f.setLayout(new FlowLayout(FlowLayout.LEFT,20,30));f.setSize(520,400);//设置窗体大小f.setLocation(200, 300);for(int i=1;i<30;i++)f.add(new Button("Button"+i));f.setVisible(true);}
}

2.BorderLayout

将容器划分为5个区域,分别是【东】EAST,【南】SOUTH,【西】WEST,【北】NORTH,【中】CENTER;

如果不指定添加区域,默认放到CENTER区,每个区域只能放置一个组件

import java.awt.*;public class Example {public static void main(String[] args) {//创建一个窗体Frame f=new Frame("BorderLayout");//设置布局管理器为BorderLayoutf.setLayout(new BorderLayout());f.setSize(520,400);//设置窗体大小f.setLocation(200, 300);//显示位置f.setVisible(true);//设置可见Button[] but=new Button[6];//创建5个按钮,分别填充在borderLayout的5个区域Button but1 =new Button("EAST");Button but2 =new Button("SOUTH");Button but3 =new Button("WEST");Button but4 =new Button("NORTH");Button but5 =new Button("CENTER");f.add(but1,BorderLayout.EAST);f.add(but2,BorderLayout.SOUTH);f.add(but3,BorderLayout.WEST);f.add(but4,BorderLayout.NORTH);f.add(but5,BorderLayout.CENTER);f.add(new Button("每个区域只能放置一个组件"), BorderLayout.CENTER);}
}

3.GridLayout

将容器分为N行M列的网格,从左到右每个网格放一个组件,所有组件宽高相同

import java.awt.*;public class Example {public static void main(String[] args) {//创建一个窗体Frame f=new Frame("GridLayout");//设置布局管理器为BorderLayoutf.setLayout(new GridLayout(3,5,10,30));//设置网格:行为3,列为5,,水平间距10,垂直间距30f.setSize(500,300);f.setLocation(400, 300);f.setVisible(true);for(int i=0;i<15;i++) {f.add(new Button("Button"+i));}}
}

4.Grid BagLayout

最灵活、最复杂的布局管理器,允许组件大小自定义,允许一个组件跨越一个或多个网格

import java.awt.*;
class Layout extends Frame{public Layout(String title) {GridBagLayout layout =new GridBagLayout();GridBagConstraints c=new GridBagConstraints();//布局约束条件this.setLayout(layout);c.fill=GridBagConstraints.BOTH;//设置组件横向纵向可以拉伸c.weightx=1;//设置横向权重为1c.weighty=1;//设置纵向权重为1this.addComponent("button1", layout, c);this.addComponent("button2", layout, c);this.addComponent("button3", layout, c);//添加的组件是本行最后一个组件c.gridwidth=GridBagConstraints.REMAINDER;this.addComponent("button4", layout, c);c.weightx=0;c.weighty=0;this.addComponent("button5", layout, c);c.gridwidth=1;//设置组件跨一个网格this.addComponent("button6", layout, c);//添加的组件是本行最后一个组件c.gridwidth=GridBagConstraints.REMAINDER;this.addComponent("button7", layout, c);c.gridheight=2;c.gridwidth=1;c.weightx=2;c.weighty=2;this.addComponent("button8", layout, c);c.gridwidth=GridBagConstraints.REMAINDER;c.gridwidth=1;//设置组件跨一个网格this.addComponent("button9", layout, c);this.addComponent("button10", layout, c);this.setTitle(title);this.pack();this.setVisible(true);}//增加组件的方法private void addComponent(String name,GridBagLayout layout,GridBagConstraints c) {Button bt=new Button(name);layout.setConstraints(bt, c);//设置约束条件c和按钮关联this.add(bt);//增加按钮}
}
public class Example {public static void main(String[] args) {new Layout("GridBagLayout");}
}

5.Card Layout

在操作程序中,经常会遇到通过选项卡来切换程序中的界面,这些界面就像一张张卡片;可以使多个界面共享一个显示空间,某一时刻只有一个界面可见

6.不使用布局管理器

import java.awt.*;public class Example {public static void main(String[] args) {Frame f=new Frame("Frame without Layout");f.setLayout(null);//取消frame的布局管理器f.setSize(300,150);f.setVisible(true);Button button1=new Button("press");Button button2=new Button("pop");button1.setBounds(40,60,100,30);//左上角的X和Y坐标、组件的长和宽button2.setBounds(150,90,110,30);f.add(button1);f.add(button2);}
}

Java 图形用户界面(GUI)布局管理器相关推荐

  1. Java图形用户界面设计音乐播放器

    Java图形用户界面设计音乐播放器 设计思路 音乐播放器的基础是可以播放音乐,所以要有一个实现播放音乐功能的类audioplay,图形界面就是通过动作调用audioplay里面的函数.关于实现播放器图 ...

  2. java怎么设置卡片布局_在Java中使用卡片布局管理器的方法

    在Java中使用卡片布局管理器的方法 发布时间:2020-12-03 16:05:18 来源:亿速云 阅读:85 作者:Leah 在Java中使用卡片布局管理器的方法?针对这个问题,这篇文章详细介绍了 ...

  3. java例程练习(布局管理器[FlowLayout])

    //FlowLayout,Panel类的默认布局管理器 import java.awt.*; public class TestLayout { public static void main(Str ...

  4. java 布局管理器_有时在Java中,一个布局管理器是不够的

    java 布局管理器 在开发Java Swing应用程序时,最经常的是,我们需要在多个嵌套面板中使用多个布局管理器. 这通常不是问题,被认为是几乎所有人类已知语言的所有UI开发的常规做法. 但是,大多 ...

  5. 有时在Java中,一个布局管理器是不够的

    在开发Java Swing应用程序时,最经常的是,我们需要在多个嵌套面板中使用多个布局管理器. 通常这不是问题,并且被认为是几乎所有人类已知语言的所有UI开发的常规做法. 但是,大多数情况下,对于UI ...

  6. java 网格布局管理器,Java使用网格组布局管理器

    package com.han; import java.awt.Container; import java.awt.GridBagConstraints; import java.awt.Grid ...

  7. java中什么是布局管理器_Java中布局管理器

    布局管理器种类 FlowLayout: 组件在一行中从左至右水平排列,排满后折行,它是Panel.Applet的默认布局管理器. BorderLayout:北.南.东.西.中,它是Window.Fra ...

  8. java 图形化界面 布局管理器

    1 package Layout; 2 import java.awt.*; 3 import javax.swing.*; 4 public class MyBorderLayout extends ...

  9. Java GUI编程的几种常用布局管理器

    Java GUI编程的几种常用布局管理器 本人是一个大二的学生.因为最近有做JavaGUI界面的需求,因此重新开始熟悉JavaGUI的各种控件和布局.然后以次博文为笔记,总结.完善以及发表最近学习的一 ...

  10. Java Swing布局管理器(详解版)

    在使用 Swing 向容器添加组件时,需要考虑组件的位置和大小.如果不使用布局管理器,则需要先在纸上画好各个组件的位置并计算组件间的距离,再向容器中添加.这样虽然能够灵活控制组件的位置,实现却非常麻烦 ...

最新文章

  1. Jenkins实现SVN+Maven+Java项目的持续集成
  2. Unity视觉效果图初学教程 Unity Visual Effects Graph for Beginners
  3. ssm jsp跳转jsp_去掉Shiro默认login.jsp跳转
  4. Postman——导出测试接口集合的Collection文件
  5. Docker常用操作命令(一)
  6. rabbitmq 在centos下的安装
  7. Linux Shell脚本_禁用selinux
  8. java的System.getProperty()方法可以获取的值
  9. 测试记录流水s1 0080481T02
  10. OpenCV4.0 快速QR二维码检测测试示例
  11. Linux操作系统的权限代码分析【转】
  12. 组合范畴语法 CCG
  13. C/C++[codeup 1931]打印日期,一年的第n天是几月几号
  14. 解决百度富文本编辑器Ueditor自定义上传视频封面
  15. 如何选购电风扇,一本电风扇选购攻略都在这里!
  16. element-ui的基本使用(一)
  17. Linux安装iso镜像中的软件
  18. 处女座女的爱情黑暗面 水瓶座男不爱你的表现是什么
  19. 图的邻接矩阵存储(简单代码实现)
  20. 房产“去库存”释放需求 集成灶市场待挖掘

热门文章

  1. HDU - 1560 DNA sequence
  2. poj 1218(经典开关问题,模拟)
  3. 关于SOA的四个基本观点 from MS
  4. python configparse_python中ConfigParse模块的用法
  5. php 图片透明,PHP怎么把一张图片透明化
  6. android studio cmake opencv_Mac下安装及配置OpenCV环境(Xcode)
  7. HbuilderX跳转 / 定义快捷键
  8. mysql_upgrade --force_社区投稿 | MySQL 8.0.16 告别mysql_upgrade升级方式
  9. mysql startupitem_MySQL数据库之Mac上安装MySQL过程分享
  10. 思科服务器型号m1414,Cisco UCS M 系列模块化服务器