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月前
|
Java 虚拟化 容器
(Java)Java里JFrame窗体的基本操作(容器布局篇-1)
容器 容器,我的理解是可以包容其他东西的玩意。它可以是一个盒子,可以是一个虚拟化的物品,可只要能包裹住其他存在质体的东西,那么都可以称作是容器。例如:JPanel组件和JScollPane组件两者都是容器也是组件。 既然有容器,那么容器中的布局就必不可少了。不然不规矩的摆放物品,人类看不习惯,我也看不习惯 ???? 本篇内容,将说明java JFrame窗体里容器中几类布局。 说明:所有在JFrame窗体里的容器布局都会使用setLayout()方法,采用的布局参数都将放进这个方法里 绝对布局 调用窗体容器
106 1
|
5月前
|
Web App开发 前端开发 JavaScript
前端新利器:CSS容器查询——让组件真正“自适应
前端新利器:CSS容器查询——让组件真正“自适应
369 83
|
4月前
|
安全 Java API
Java中的Lambda表达式:简洁与功能的结合
Java中的Lambda表达式:简洁与功能的结合
444 211
|
4月前
|
JavaScript Java 微服务
现代化 Java Web 在线商城项目技术方案与实战开发流程及核心功能实现详解
本项目基于Spring Boot 3与Vue 3构建现代化在线商城系统,采用微服务架构,整合Spring Cloud、Redis、MySQL等技术,涵盖用户认证、商品管理、购物车功能,并支持Docker容器化部署与Kubernetes编排。提供完整CI/CD流程,助力高效开发与扩展。
518 64
|
3月前
|
存储 数据可视化 Java
Java Stream API 的强大功能
Java Stream API 是 Java 8 引入的重要特性,它改变了集合数据的处理方式。通过声明式语法,开发者可以更简洁地进行过滤、映射、聚合等操作。Stream API 支持惰性求值和并行处理,提升了代码效率和可读性,是现代 Java 开发不可或缺的工具。
Java Stream API 的强大功能
|
4月前
|
前端开发 JavaScript Java
Java 项目实战城市公园信息管理系统开发流程与实用功能实现指南
本系统基于Java开发,采用Spring Boot后端框架与Vue.js前端框架,结合MySQL数据库,构建了一个高效的城市公园信息管理系统。系统包含管理员、用户和保洁人员三大模块,涵盖用户管理、园区信息查询、订票预约、服务管理等功能,提升公园管理效率与服务质量。
171 6
|
4月前
|
安全 Java 数据库
Java 项目实战病人挂号系统网站设计开发步骤及核心功能实现指南
本文介绍了基于Java的病人挂号系统网站的技术方案与应用实例,涵盖SSM与Spring Boot框架选型、数据库设计、功能模块划分及安全机制实现。系统支持患者在线注册、登录、挂号与预约,管理员可进行医院信息与排班管理。通过实际案例展示系统开发流程与核心代码实现,为Java Web医疗项目开发提供参考。
229 2
|
5月前
|
Java API
Java API中Math类功能全景扫描
在实际使用时,这些方法的精确度和性能得到了良好的优化。当处理复杂数学运算或高精度计算时,`Math`类通常是足够的。然而,对于非常精细或特殊的数学运算,可能需要考虑使用 `java.math`包中的 `BigDecimal`类或其他专业的数学库。
135 11
|
4月前
|
机器学习/深度学习 算法 Java
Java 大视界 -- Java 大数据机器学习模型在生物信息学基因功能预测中的优化与应用(223)
本文探讨了Java大数据与机器学习模型在生物信息学中基因功能预测的优化与应用。通过高效的数据处理能力和智能算法,提升基因功能预测的准确性与效率,助力医学与农业发展。
|
5月前
|
Java API
深入解析Java API中Object类的功能
了解和合理运用 Object类的这些方法,对于编写可靠和高效的Java应用程序至关重要。它们构成了Java对象行为的基础,影响着对象的创建、识别、表达和并发控制。
108 0

热门文章

最新文章