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列


                                                         《第二部分》

往往我们的功能组件是添加在面板之上, 所以在介绍功能组件之前,我们需要先创建窗口和面板,再在其基础之上进行修饰和添加功能组件。

import javax.swing.*;
//swing 是一个为Java设计的GUI工具包javax.swing,该包中包括了图形用户界面的各种组件支持。
public class Design extends JFrame {
//在构造方法中设计界面
    public Design(){
        this.setSize(450, 400);//设置大小
        this.setTitle("登录/注册界面");           //设置标题
        this.setLocationRelativeTo(null);   //居中位置
        this.setResizable(false);           //窗口大小不可改变
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭窗口就退出程序
        //创建面板
        JPanel panel = new JPanel(new FlowLayout());//流式布局
        /*
         添加组件
         */
        this.add(panel);//将面板添加到窗口上
        this.setVisible(true);//窗口可见
    }
    public static void main(String[] args) {
        new Design();
    }
}

功能组件


JLable — 标签

构造函数:

JLabel( )                 创建一个空的标签

JLabel(String text)  创建一个带文本的标签

常用方法:

void setText(String text)  设置标签上的文本

String getText( )             获得标签上的文本

setFont(new Font(“宋体”,Font.BOLD, 18))  设置字体

代码演示:

        JLabel label = new JLabel("账号");
        label.setFont(new Font("楷体", Font.BOLD, 20));//设置字体和大小
        panel.add(label);//添加标签带面板上 

运行结果:

(我们用的是流式布局,默认居中)

JTextField — 单行文本

代码演示:

        JTextField textField = new JTextField();//创建单行文本
        textField.setText("请输入账号");//设置文本内容
        textField.setColumns(16);//设置长度
        panel.add(textField);//将单行文本组件添加到面板

运行结果:

JPasswordField — 密码框

代码演示:

        JPasswordField jPasswordField =new JPasswordField(18);
//转换为字符串,方便以后获取密码
        String password = new String(jPasswordField.getPassword());
        panel.add(jPasswordField);

运行结果:

JTextArea — 多行文本框

代码演示:

        JTextArea textArea =new JTextArea(13,22);//创建多行文本框(行 列)
        textArea.setLineWrap(true);//可以换行(水平方向不会向外扩充)
        textArea.setBackground(new Color(0xC5E5DE));//设置文本框背景色
        panel.add(textArea);

JScrollPane — 带滚动条面板

        JScrollPane jScrollPane =new JScrollPane(textArea);//为文本框添加滚动条
        panel.add(jScrollPane);

运行结果:

JButton — 按钮

代码演示:

        JButton button1 =new JButton("登录");//创建按钮(标题)
        button1.setToolTipText("点击登录");//设置标注(鼠标停滞在按钮上显现)
        panel.add(button1);
        JButton button2 =new JButton("注册");
        button2.setToolTipText("点击注册");
        panel.add(button2);

运行结果:


JMenuBar — 菜单栏组件

//创建菜单栏,来存放菜单,并添加到窗口上
        JMenuBar jMenuBar =new JMenuBar();
        this.setJMenuBar(jMenuBar);//把菜单栏加到窗口

JMenu — 菜单组件

//创建菜单组件,并添加到菜单栏上
        JMenu jMenu1 =new JMenu("文件");
        JMenu jMenu2 =new JMenu("编辑");
        JMenu jMenu3 =new JMenu("帮助");
        jMenuBar.add(jMenu1);
        jMenuBar.add(jMenu2);
        jMenuBar.add(jMenu3);

JMenuItem — 菜单项组件

//创建菜单项,并添加在菜单上
        JMenuItem jMenuItem1 =new JMenuItem("新建");
        JMenuItem jMenuItem2 =new JMenuItem("保存");
        jMenu1.add(jMenuItem1);//这里我们以文件菜单为例,为其添加菜单项
        jMenu1.add(jMenuItem2);

此三个功能组件通常搭配一起使用

运行结果: 


相关文章
|
2月前
|
前端开发 API 开发者
harmonyOS基础- 快速弄懂HarmonyOS ArkTs基础组件、布局容器(前端视角篇)
本文由黑臂麒麟(6年前端经验)撰写,介绍ArkTS开发中的常用基础组件与布局组件。基础组件包括Text、Image、Button等,支持样式设置如字体颜色、大小和加粗等,并可通过Resource资源引用统一管理样式。布局组件涵盖Column、Row、List、Grid和Tabs等,支持灵活的主轴与交叉轴对齐方式、分割线设置及滚动事件监听。同时,Tabs组件可实现自定义样式与页签切换功能。内容结合代码示例,适合初学者快速上手ArkTS开发。参考华为开发者联盟官网基础课程。
201 75
harmonyOS基础- 快速弄懂HarmonyOS ArkTs基础组件、布局容器(前端视角篇)
|
3月前
|
存储 安全 算法
Java容器及其常用方法汇总
Java Collections框架提供了丰富的接口和实现类,用于管理和操作集合数据。
Java容器及其常用方法汇总
|
3月前
|
存储 小程序 前端开发
微信小程序与Java后端实现微信授权登录功能
微信小程序极大地简化了登录注册流程。对于用户而言,仅仅需要点击授权按钮,便能够完成登录操作,无需经历繁琐的注册步骤以及输入账号密码等一系列复杂操作,这种便捷的登录方式极大地提升了用户的使用体验
958 12
|
4月前
|
监控 Java 中间件
8G的容器Java堆才4G怎么就OOM了?
本文记录最近一例Java应用OOM问题的排查过程,希望可以给遇到类似问题的同学提供参考。
|
6月前
|
安全 网络安全 数据安全/隐私保护
利用Docker的网络安全功能来保护容器化应用
通过综合运用这些 Docker 网络安全功能和策略,可以有效地保护容器化应用,降低安全风险,确保应用在安全的环境中运行。同时,随着安全威胁的不断变化,还需要持续关注和研究新的网络安全技术和方法,不断完善和强化网络安全保护措施,以适应日益复杂的安全挑战。
180 61
|
5月前
|
Java
java实现从HDFS上下载文件及文件夹的功能,以流形式输出,便于用户自定义保存任何路径下
java实现从HDFS上下载文件及文件夹的功能,以流形式输出,便于用户自定义保存任何路径下
184 34
|
6月前
|
安全 Java 测试技术
🎉Java零基础:全面解析枚举的强大功能
【10月更文挑战第19天】本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
176 60
|
6月前
|
存储 安全 Java
Java多线程编程中的并发容器:深入解析与实战应用####
在本文中,我们将探讨Java多线程编程中的一个核心话题——并发容器。不同于传统单一线程环境下的数据结构,并发容器专为多线程场景设计,确保数据访问的线程安全性和高效性。我们将从基础概念出发,逐步深入到`java.util.concurrent`包下的核心并发容器实现,如`ConcurrentHashMap`、`CopyOnWriteArrayList`以及`BlockingQueue`等,通过实例代码演示其使用方法,并分析它们背后的设计原理与适用场景。无论你是Java并发编程的初学者还是希望深化理解的开发者,本文都将为你提供有价值的见解与实践指导。 --- ####
|
7月前
|
存储 消息中间件 安全
JUC组件实战:实现RRPC(Java与硬件通过MQTT的同步通信)
【10月更文挑战第9天】本文介绍了如何利用JUC组件实现Java服务与硬件通过MQTT的同步通信(RRPC)。通过模拟MQTT通信流程,使用`LinkedBlockingQueue`作为消息队列,详细讲解了消息发送、接收及响应的同步处理机制,包括任务超时处理和内存泄漏的预防措施。文中还提供了具体的类设计和方法实现,帮助理解同步通信的内部工作原理。
JUC组件实战:实现RRPC(Java与硬件通过MQTT的同步通信)
|
6月前
|
Ubuntu 网络安全 容器
KubeSphere 是一个开源的容器平台,提供丰富的功能和便捷的操作界面,适用于企业容器化部署和管理
KubeSphere 是一个开源的容器平台,提供丰富的功能和便捷的操作界面,适用于企业容器化部署和管理。本文详细介绍了如何在 Ubuntu 22.04 上安装 KubeSphere,包括系统要求、安装依赖项、设置防火墙、下载安装脚本、选择安装选项、验证安装结果等步骤,并提供了常见问题的解决方法。希望本文能为读者提供实用的参考和帮助。
127 3