Java详解:GUI图形用户界面设计—容器组件及面板布局方式

简介: Java详解:GUI图形用户界面设计—容器组件及面板布局方式

简介:

Graphical User Interface(GUI)图形用户界面

图形界面对于用户来说在视觉上更易于接受.

关于swing:

• swing是一个为java设计的GUI工具包javax.swing,包括了用户界面的各种组件.

• swing中组件可以分为两大类:

        容器组件(窗口、面板、对话框)

        功能组件(按钮、菜单)

容器组件:

📌窗口(JFrame)
//继承JFrame类
public class FrameDesign extends JFrame {
    //设置操作必须写在构造方法中
    public FrameDesign() {
        this.setSize(400, 400);//设置窗口大小
        this.setTitle("登录界面");           //设置标题
        this.setLocationRelativeTo(null);   //居中位置
        this.setResizable(false);           //设置窗口不可调整大小
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭窗口并退出程序运行
        this.setVisible(true);              //让窗口显示出来(放在设置最后一行)
    }
 
    public static void main(String[] args) {
        new FrameDesign();//创建FrameDesign类对象
    }
}

📖 代码解释:

⑴ 首先我们创建一个类并继承JFrame类,JFrame类用来创建窗体

⑵ 创建类的构造方法,在构造方法中对窗口进行设置

设置窗口的常用方法:

void setSize(int width, int height)  //设置窗口大小


void setVisible(boolean b)             //设置是否可见(通常为可见, 且放在设置的最后一行)


void setTitle(String title)              //设置标题


void setResizable(boolean resizable)   //设置窗口是否可调整大小(通常为不可调整)


void setLocation(int x,int y)                   //设置窗口位置(不常用, 通常使用居中)


void setLocationRelativeTo(null)           //窗口居中 (常用)


void setDefaultCloseOperation(int operation)    //设置窗口的关闭操作(通常设置为关闭窗口并退出程序运行,即JFrame.EXIT_ON_CLOSE)

运行结果:

📌面板(JPanel)

• 创建一个面板并上色        ( 面板为轻量级容器,需在窗口基础之上添加 )

        JPanel panel =new JPanel();//创建面板
        panel.setBackground(Color.CYAN);//设置背景
        this.add(panel);//将面板添加到窗口中

• 我们还可以通过new Color的方式自定义颜色


• 面板为轻量级的容器且面板可以布局

•  布局方式分为三大类:

    • FlowLayout(流式布局)     • BorderLayout(边界布局)      • GridLayout(网格布局)


○ 流式布局FlowLayout

• 流式布局也是默认的布局方式,组件在面板上从左到右,从上到下排列.

• 流式布局默认水平居中且不影响组件大小.

📖代码解释:

面板是轻量级的容器,所以需要添加到窗口上,我们创建面板(JPanel)后,通过创建5个按钮组件来体验下不同的布局方式的效果。

import javax.swing.*;
import java.awt.*;
 
//继承JFrame类
public class FrameDesign extends JFrame {
    //设置操作必须写在构造方法中
    public FrameDesign() {
        this.setSize(400, 400);//设置窗口大小
        this.setTitle("登录界面");           //设置标题
        this.setLocationRelativeTo(null);   //居中位置
        this.setResizable(false);           //设置窗口不可调整大小
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭窗口并退出程序运行
 
        JPanel panel =new JPanel(new FlowLayout());
        JButton button1 =new JButton("按钮1");
        JButton button2 =new JButton("按钮2");
        JButton button3 =new JButton("按钮3");
        JButton button4 =new JButton("按钮4");
        JButton button5 =new JButton("按钮5");
        panel.add(button1);
        panel.add(button2);
        panel.add(button3);
        panel.add(button4);
        panel.add(button5);
 
        this.add(panel);//将面板添加到窗口中
        this.setVisible(true);              //让窗口显示出来(放在设置最后一行)
    }
    public static void main(String[] args) {
        new FrameDesign();//创建FrameDesign类对象
    }
}


○ 边界布局BorderLayout

• 共有5个区域(上下左右中) 中间不能少

 若其余(除中间之外)位置没有指明,中间位置的组件会对其进行填充

📖代码解释:

我们通过改变JPanel构造方法中的布局类型,改为BorderLayout,并且在添加时指明具体的位置(上下左右中),其余代码和上面流式布局代码一样.

 JPanel panel =new JPanel(new BorderLayout());
        JButton button1 =new JButton("按钮1");
        JButton button2 =new JButton("按钮2");
        JButton button3 =new JButton("按钮3");
        JButton button4 =new JButton("按钮4");
        JButton button5 =new JButton("按钮5");
        panel.add(button1,BorderLayout.NORTH);//添加时指明位置
        panel.add(button2,BorderLayout.SOUTH);
        panel.add(button3,BorderLayout.WEST);
        panel.add(button4,BorderLayout.EAST);
        panel.add(button5,BorderLayout.CENTER);//中间不能省略


○ 网格布局GridLayout

• 我们可以对网格的进行行列设置

📖代码解释:

相比上面的流式布局代码,我们只需改变JPanel构造方法中的布局类型即可(将FlowLayout改为GridLayout),并且我们可以设置网格的行列数.

JPanel panel =new JPanel(new GridLayout(5, 1));//5行1列


相关文章
|
20天前
|
监控 Java 中间件
8G的容器Java堆才4G怎么就OOM了?
本文记录最近一例Java应用OOM问题的排查过程,希望可以给遇到类似问题的同学提供参考。
|
3月前
|
存储 安全 Java
Java多线程编程中的并发容器:深入解析与实战应用####
在本文中,我们将探讨Java多线程编程中的一个核心话题——并发容器。不同于传统单一线程环境下的数据结构,并发容器专为多线程场景设计,确保数据访问的线程安全性和高效性。我们将从基础概念出发,逐步深入到`java.util.concurrent`包下的核心并发容器实现,如`ConcurrentHashMap`、`CopyOnWriteArrayList`以及`BlockingQueue`等,通过实例代码演示其使用方法,并分析它们背后的设计原理与适用场景。无论你是Java并发编程的初学者还是希望深化理解的开发者,本文都将为你提供有价值的见解与实践指导。 --- ####
|
4月前
|
消息中间件 NoSQL Kafka
Flink-10 Flink Java 3分钟上手 Docker容器化部署 JobManager TaskManager Kafka Redis Dockerfile docker-compose
Flink-10 Flink Java 3分钟上手 Docker容器化部署 JobManager TaskManager Kafka Redis Dockerfile docker-compose
108 4
|
4月前
|
Kubernetes Cloud Native 流计算
Flink-12 Flink Java 3分钟上手 Kubernetes云原生下的Flink集群 Rancher Stateful Set yaml详细 扩容缩容部署 Docker容器编排
Flink-12 Flink Java 3分钟上手 Kubernetes云原生下的Flink集群 Rancher Stateful Set yaml详细 扩容缩容部署 Docker容器编排
125 3
|
2月前
|
监控 NoSQL 时序数据库
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
294 78
|
1月前
|
Ubuntu NoSQL Linux
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结
150 6
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结
|
2月前
|
监控 Docker 容器
在Docker容器中运行打包好的应用程序
在Docker容器中运行打包好的应用程序
|
2月前
|
Ubuntu Linux 开发工具
docker 是什么?docker初认识之如何部署docker-优雅草后续将会把产品发布部署至docker容器中-因此会出相关系列文章-优雅草央千澈
Docker 是一个开源的容器化平台,允许开发者将应用程序及其依赖项打包成标准化单元(容器),确保在任何支持 Docker 的操作系统上一致运行。容器共享主机内核,提供轻量级、高效的执行环境。本文介绍如何在 Ubuntu 上安装 Docker,并通过简单步骤验证安装成功。后续文章将探讨使用 Docker 部署开源项目。优雅草央千澈 源、安装 Docker 包、验证安装 - 适用场景:开发、测试、生产环境 通过以上步骤,您可以在 Ubuntu 系统上成功安装并运行 Docker,为后续的应用部署打下基础。
95 5
docker 是什么?docker初认识之如何部署docker-优雅草后续将会把产品发布部署至docker容器中-因此会出相关系列文章-优雅草央千澈
|
2月前
|
存储 Kubernetes 开发者
容器化时代的领航者:Docker 和 Kubernetes 云原生时代的黄金搭档
Docker 是一种开源的应用容器引擎,允许开发者将应用程序及其依赖打包成可移植的镜像,并在任何支持 Docker 的平台上运行。其核心概念包括镜像、容器和仓库。镜像是只读的文件系统,容器是镜像的运行实例,仓库用于存储和分发镜像。Kubernetes(k8s)则是容器集群管理系统,提供自动化部署、扩展和维护等功能,支持服务发现、负载均衡、自动伸缩等特性。两者结合使用,可以实现高效的容器化应用管理和运维。Docker 主要用于单主机上的容器管理,而 Kubernetes 则专注于跨多主机的容器编排与调度。尽管 k8s 逐渐减少了对 Docker 作为容器运行时的支持,但 Doc
165 5
容器化时代的领航者:Docker 和 Kubernetes 云原生时代的黄金搭档
|
1月前
|
Kubernetes Linux 虚拟化
入门级容器技术解析:Docker和K8s的区别与关系
本文介绍了容器技术的发展历程及其重要组成部分Docker和Kubernetes。从传统物理机到虚拟机,再到容器化,每一步都旨在更高效地利用服务器资源并简化应用部署。容器技术通过隔离环境、减少依赖冲突和提高可移植性,解决了传统部署方式中的诸多问题。Docker作为容器化平台,专注于创建和管理容器;而Kubernetes则是一个强大的容器编排系统,用于自动化部署、扩展和管理容器化应用。两者相辅相成,共同推动了现代云原生应用的快速发展。
149 11

热门文章

最新文章