五种JAVA GUI布局管理的方式

 更新时间:2020年06月15日 11:53:13   作者:一名小和尚  
这篇文章主要介绍了JAVA几种GUI布局管理的相关知识,文中代码非常详细,帮助大家更好的理解和学习,感兴趣的朋友可以了解下

1. 流式布局(FlowLayout)

定义:
通俗地说,流式布局就是根据窗口大小,自动改变窗口内组件的位置。例如:原窗口大小一行可以容纳10个BUTTON,但将窗口缩小后,每行仅能容纳5个BUTTON,此时原先的10个BUTTON中的五个就会自动排列到下一行。

示例:(省略panel的使用)

Hashset

package 布局管理;
​
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
​
public class Layout { //流式布局
 public static void main(String[] args) {
 Frame frame = new Frame(); //创建一个窗口
 frame.setLayout(new FlowLayout(FlowLayout.LEFT)); //将窗口布局设置为流式布局,并设置向左对齐
​
 Button button1 = new Button("button1"); //创建若干个按钮
 Button button2 = new Button("button2");
 Button button3 = new Button("button3");
 Button button4 = new Button("button4");
 Button button5 = new Button("button5");
​
 frame.add(button1); //将按钮添加进窗口中
 frame.add(button2);
 frame.add(button3);
 frame.add(button4);
 frame.add(button5);
​
​
 frame.setBounds(200,200,500,500); //设置窗口的位置与大小
 frame.setVisible(true); //设置窗口可见性
 frame.addWindowListener(new WindowAdapter() { //事件监听:关闭窗口
 @Override
 public void windowClosing(WindowEvent e) {
 System.exit(0);
 }
 });
​
 }
}

2. 东西南北中布局(BorderLayout)

定义:
东西南北中布局,顾名思义。将窗口分为东西南北中四个“块儿”,也可以称作上下左右中布局,便于理解。

示例:(省略panel的使用)

package 布局管理;
​
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
​
public class BorderLayout { //东西南北中布局
 public static void main(String[] args) {
 Frame frame = new Frame();
 frame.setLayout(new java.awt.BorderLayout());
​
 Button east = new Button("East");
 east.setBackground(new Color(140, 172, 51));
 Button west = new Button("West");
 west.setBackground(new Color(140, 172, 51));
 Button north = new Button("North");
 north.setBackground(new Color(38, 222, 135));
 Button south = new Button("South");
 south.setBackground(new Color(38, 222, 135));
 Button center = new Button("Center");
​
 frame.add(east, java.awt.BorderLayout.EAST);
 frame.add(west, java.awt.BorderLayout.WEST);
 frame.add(north, java.awt.BorderLayout.NORTH);
 frame.add(south, java.awt.BorderLayout.SOUTH);
 frame.add(center, java.awt.BorderLayout.CENTER);
​
 frame.setBounds(200,200,500,500);
 frame.setVisible(true);
 frame.addWindowListener(new WindowAdapter() {
 @Override
 public void windowClosing(WindowEvent e) {
 System.exit(0);
​
 }
 });
 }
}

3. 表格式布局

定义:
将窗口拆分为若干个表格(拆分为自己需要的表格),再往里添加组件。

示例:
GUI经常使用的“登录”、“注册”界面

package 布局管理;
​
import javafx.scene.control.PasswordField;
import javafx.scene.layout.Pane;
import sun.security.util.Password;
​
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.nio.charset.Charset;
​
public class GridLayout {
 public static void main(String[] args) {
// System.out.println("file.encoding=" + System.getProperties().getProperty("file.encoding"));
// System.out.println("默认是:"+ Charset.defaultCharset().name());
 Frame frame = new Frame("表格布局");
 frame.setLayout(new java.awt.GridLayout(4,1)); //设置行列数
​
 Panel panel1 = new Panel();
 frame.add(panel1);
 Panel panel2 = new Panel();
 frame.add(panel2);
 Panel panel3 = new Panel();
 frame.add(panel3);
 Panel panel4 = new Panel();
 frame.add(panel4);
​
 Label label = new Label("welcome to *** system");
 label.setFont(new Font("宋体", Font.PLAIN, 26));
​
 Label label1 = new Label("Account: ");
 TextField textField = new TextField();
 textField.setColumns(20);
​
 Label label2 = new Label("Password: ");
 TextField textField1 = new TextField(); //AWT没有passwordField
 textField1.setColumns(20);
 textField1.setEchoChar('*');
​
 Button button = new Button("Login");
​
 panel1.add(label);
 panel2.add(label1);
 panel2.add(textField);
 panel3.add(label2);
 panel3.add(textField1);
 panel4.add(button);
​
 frame.setBounds(200,200,500,250);
 frame.setVisible(true);
 frame.addWindowListener(new WindowAdapter() {
 @Override
 public void windowClosing(WindowEvent e) {
 System.exit(0);
 }
 });
​
 }
}

4. 我不要布局!!!
当设置 frame.setLayout(null) ;时,可以使用给panel设置坐标的方式控制布局,更具灵活性!

package AWT;
​
import javafx.scene.layout.Pane;
​
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
​
public class panel {
 public static void main(String[] args) {
 Frame frame = new Frame(); //new一个窗口出来
 Panel panel = new Panel(); //new一个面板
 Panel panel1 = new Panel(); //new一个面板
 Panel panel2 = new Panel(); //new一个面板
​
 frame.setLayout(null); //设置布局为空
​
 frame.setBounds(200,200,500,500); //设置窗口位置大小
​
 panel.setBounds(20,15,460,50); //设置第一个面板
 panel.setBackground(new Color(253, 228,1)); //设置面板颜色
 panel1.setBounds(20,70,100,415);
 panel1.setBackground(new Color(0, 71, 254));
 panel2.setBounds(130,70,350,415);
 panel2.setBackground(new Color(1,1,1));
​
 frame.add(panel); //面板加入到窗口中
 frame.add(panel1);
 frame.add(panel2);
​
 frame.setVisible(true);
​
 frame.addWindowListener(new WindowAdapter() {
 @Override
 public void windowClosing(WindowEvent e) {
 System.exit(0);
 }
 }); {
​
 }
​
 }
​
}

5. 我都要!!!

为了使界面更加美观,可以使用多种布局的嵌套哦!

以上就是五种JAVA GUI布局管理的方式的详细内容,更多关于JAVA GUI布局的资料请关注脚本之家其它相关文章!

相关文章

  • 基于Java实现QQ登录注册功能的示例代码

    基于Java实现QQ登录注册功能的示例代码

    这篇文章主要和大家分享如何利用Java语言实现QQ登录、注册等功能。本文主要应用的技术有:GUI、JDBC、多线程等,需要的可以参考一下
    2022-05-05
  • Spring RedirectAttributes参数跳转代码实例

    Spring RedirectAttributes参数跳转代码实例

    这篇文章主要介绍了Spring RedirectAttributes参数跳转代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • Java深入浅出数组的定义与使用下篇

    Java深入浅出数组的定义与使用下篇

    数组是有序的元素序列,若将有限个类型相同的变量的集合命名,那么这个名称为数组名。组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量。数组是在程序设计中,为了处理方便, 把具有相同类型的若干元素按有序的形式组织起来的一种形式
    2022-03-03
  • 以Spring Boot的方式显示图片或下载文件到浏览器的示例代码

    以Spring Boot的方式显示图片或下载文件到浏览器的示例代码

    这篇文章主要介绍了以Spring Boot的方式显示图片或下载文件到浏览器的示例代码,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-01-01
  • SpringCloud学习笔记之SpringCloud搭建父工程的过程图解

    SpringCloud学习笔记之SpringCloud搭建父工程的过程图解

    SpringCloud是分布式微服务架构的一站式解决方案,十多种微服务架构落地技术的集合体,俗称微服务全家桶,这篇文章主要介绍了SpringCloud学习笔记(一)搭建父工程,需要的朋友可以参考下
    2021-10-10
  • Spring Boot2.0使用Spring Security的示例代码

    Spring Boot2.0使用Spring Security的示例代码

    这篇文章主要介绍了Spring Boot2.0使用Spring Security的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-08-08
  • JVM调试命令与调试工具详解

    JVM调试命令与调试工具详解

    JVM statistics Monitoring,用于监视虚拟机运行时状态信息的命令,它可以显示出虚拟机进程中的类装载、内存、垃圾收集、JIT编译等运行数据,这篇文章主要介绍了JVM调试命令与调试工具,需要的朋友可以参考下
    2023-10-10
  • 当面试官问我ArrayList和LinkedList哪个更占空间时,我是这么答的(面试官必问)

    当面试官问我ArrayList和LinkedList哪个更占空间时,我是这么答的(面试官必问)

    今天介绍一下Java的两个集合类,ArrayList和LinkedList,这两个集合的知识点几乎可以说面试必问的。感兴趣的朋友跟随小编一起看看吧
    2020-08-08
  • Spring Boot/Angular整合Keycloak实现单点登录功能

    Spring Boot/Angular整合Keycloak实现单点登录功能

    Keycloak新的发行版命名为Quarkus,专为GraalVM和OpenJDK HotSpot量身定制的一个Kurbernetes Native Java框架,计划2019年底正式发布。这篇文章主要介绍了Spring Boot/Angular整合Keycloak实现单点登录,需要的朋友可以参考下
    2019-10-10
  • java 在图片上写字,两个图片合并的实现方法

    java 在图片上写字,两个图片合并的实现方法

    下面小编就为大家带来一篇java 在图片上写字,两个图片合并的实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-11-11

最新评论