Swing简述

news/2024/11/27 8:25:54/

一、Swing概述

  • GUI(图形用户界面)为程序提供图形界面,它最初的设计目的是为程序员构建一个通用的GUI,使其能够在所有的平台上运行,但Java 1.0中基础类AWT(抽象窗口工具箱)并没有达到这个要求,于是Swing出现了,它是AWT组件的增强组件,但是它并不能完全替代AWT组件,这两种组件需要同时出现在一个图形用户界面中。

1. Swing特点

  • 原来的AWT组件来自java.awt包,当含有AWT组件的Java应用程序在不同平台上执行时,每个平台的GUI组件的显示会有所不同,但是在不同平台上运行使用Swing开发的程序时,就可以统一GUI组件的显示风格,因为Swing组件允许编程人员在跨平台时指定统一的外观和风格。
  • Swing组件通产被称为"轻量型组件",因为它完全由Java语言编写,而Java是不依赖于操作系统的语言,它可以在任何平台上运行;相反,依赖于本地平台的组件被称为“重量级组件”,如AWT组件就是依赖本地平台的窗口系统来决定组件的功能、外观和风格。
  • Swing主要具有以下特点:
    • 轻量级组件。
    • 可插入外观组件。

2. Swing包

  • 为了有效使用Swing组件,必须了解Swing包的结构层次和继承关系,其中比较重要的类是Component类、Container类、JComponent类。
  • Swing组件的类的层次和继承关系:
    在这里插入图片描述
  • 在Swing组件中大多数GUI组件都是Component类的直接子类或间接子类,JComponent类是Swing组件各种特性的存放位置,这些组件的特性包括设定组件边界、GUI组件自动滚动等。
  • 在Swing组件中最重要的弗雷是Container类,而Container类有两个最重要的子类,分别为java.awt.Window与java.awt.Frame,除了以往的AWT类组件会继承这两个类之外,现在的Swing组件也扩展了这两个类。顶层父类是Component类与Container类,所以Java关于窗口组件的编写,都与组件以及容器的概念相关联。

3. 常用Swing组件概述

组件名称定义
JButton代表Swing按钮,按钮可以带一些图片或文字。
JCheckBox代表Swing中的复选框组件。
JcomBox代表下拉列表框,可以在下拉显示区域显示多个选项。
JFrame代表Swing的框架类。
JDialog代表Swing版本的对话框。
JLabel代表Swing中的标签组件。
JRadioButton代表Swing中的单选按钮。
JList代表能够在用户界面中显示一系列条目的组件。
JTextField代表文本框。
JPasswordField代表密码框。
JTextArea代表Swing中的文本区域。
JOptionPane代表Swing中的一些对话框。

二、常用窗体

  • 作为Swing应用程序中组件的承载体,处于非常重要的位置。Swing中常用的窗体包括JFrame和JDialog。

1. JFrame窗体

  • JFrame窗体是一个容器,它是Swing程序中各个组件的载体,可以将JFrame看作是承载这些Swing组件的容器。在开发应用程序时,可以通过继承java.swing.JFrame类创建一个窗体,在这个窗体中添加组件,同时为组件设置事件。由于该窗体继承了JFrame类,所以它拥有“最大化”、“最小化”、“关闭”等按钮。
  • JFrame的语法:
JFrame jf = new JFrame(title);
Contianer container = jf.getContentPane();
// jf:JFrame类的对象。
// container:Container类的对象,可以使用JFrame对象调用getContentPane()方法获取。
  • Swing组件的窗体通常与组件和容器有关,所以在JFrame对象创建完成后,需要掉哦用getContentPane()方法将窗体转换为容器,然后在容器中添加组件或设置布局管理器。通常,这个容器用来包含和显示组件。如果需要将组件添加至容器,可以使用来自Container类的add()方法进行设置。
container.add(new JButton("按钮"));    // JButton组件
  • 在容器中添加组件后,也可以使用Container类的remove()方法将这些组件从容器中删除。
container.remove(new JButton("按钮"));     

实例1 使用JLabel简单标签组件

  • 下面的实例中实现了JFrame对象创建一个窗体,并在其中添加一个组件。
package pack1;
import java.awt.*;    // 导入awt包
import javax.swing.*;   // 导入swing包public class Example1 extends JFrame {public void CreateJFrame(String title) {JFrame jf = new JFrame(title);       // 实例化一个JFrame对象Container container = jf.getContentPane();     // 获取一个容器JLabel jl = new JLabel("这是一个JFrame窗体");    // 获取一个JLabel标签jl.setHorizontalAlignment(SwingConstants.CENTER);    // 使标签上的文字居中container.add(jl);     // 将标签添加到容器中container.setBackground(Color.white);     // 设置容器颜色背景jf.setVisible(true);   // 设置窗体可视jf.setSize(200, 150);   // 设置窗体大小jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);   // 设置窗体关闭方式}public static void main(String[] args) {    // 再主方法中调用CreateJFrame()方法// TODO Auto-generated method stubnew Example1().CreateJFrame("创建一个JFrame窗体");}
}

在这里插入图片描述

  • Example1类继承了JFrame类,在CreateJFrame()方法中实例化JFrame对象。JFrame类的常用构造方法包括以下两种形式:
    • public JFrame()
    • public JFrame(String title)
  • JFrame类中的两种构造方法分别为无参和有参的构造方法,第1种形式的构造方法可以创建一个初始不可见、没有标题的新窗体;第2种在实例化该JFrame对象时可以创建一个不可见但有标题的窗体。可以使用JFrame对象调用show()方法使窗体可见,但是该方法早已被新版JDK弃用,通常使用setVisible(true)方法使窗体可见。
  • 可以使用setSize(int x, int y)方法设置窗体大小,其中x与y变量分别代表窗体的宽与高。
  • 创建窗体后,需要给予窗体一个关闭方式,可以调用setDefaultCloseOperation()方法关闭窗体。Java为窗体关闭提供了多种方式,常用的有以下4种:
    • DO_NOTHING_ON_CLOSE:什么都不做就将窗体关闭。
    • DISPOSE_ON_CLOSE:任何注册监听程序对象后会自动隐藏并释放窗体。
    • HIDE_ON_CLOSE:隐藏窗口的默认窗口关闭。
    • EXIT_ON_CLOSE:退出应用程序默认窗口关闭。
  • 这几种操作实质上是将一个int类型的常量封在javax.swing.WindowConstants接口中。

2. JDialog窗体

  • JDialog窗体是Swing组件中的对话框,它继承了AWT组件中的java.awt.Dialog类。
  • JDialog窗体的功能是从一个窗体弹出另一个窗体,就像是在使用IE浏览器时弹出确定对话框一样。JDialog窗体实质上是另一种类型的窗体,它与JFrame窗体类似,在使用时也需要调用getContentPane()方法将窗体转换为容器,然后在容器中设置窗体的特性。
  • 在应用程序中创建JDialog窗体需要实例化JDialog类,通常使用以下几个Dialog类的构造方法
    • public JDialog():创建一个没有标题和父窗体的对话框。
    • public JDialog(Frame f):创建一个指定父窗体的对话框,但该窗体没有标题。
    • public JDialog(Frame f, boolean model):创建一个指定类型的对话框,并指定父窗体,但该窗体没有指定标题。
    • public JDialog(Frame f, String title):创建一个指定标题和父窗体的对话框。
    • public JDialog(Frame f, String title, boolean model):创建一个指定标题、窗体红外模式的对话框。

http://www.ppmy.cn/news/74973.html

相关文章

【C++】 排列与组合算法详解(进阶篇)

文章目录 写在前面算法1:朴素算法思路缺点 算法2:递推预处理思路时间复杂度: O ( n 2 ) O(n^2) O(n2) 算法3:阶乘逆元思路时间复杂度: O ( n log ⁡ n ) O(n \log n) O(nlogn)思考:读者也可以尝试写 O ( n…

一文读懂selenium自动化测试(基于Python)

前言 我们今天来聊聊selenium自动化测试,我们都知道selenium是一款web自动化测试的工具,它应该如何去运用呢?我们接着看下去。 ​1、Selenium简介: 1.1 Selenium: Selenium是一款主要用于Web应用程序自动化测试的工具集合。Sele…

CTF必看~ PHP反序列化漏洞6:绝妙_wakeup绕过技巧

作者:Eason_LYC 悲观者预言失败,十言九中。 乐观者创造奇迹,一次即可。 一个人的价值,在于他所拥有的。可以不学无术,但不能一无所有! 技术领域:WEB安全、网络攻防 关注WEB安全、网络攻防。我的…

RocketMQ学习

各MQ 并发性能比较 吞吐量 kafka 17.3w/s rocketMQ 11.6w/s RabbitMQ 5.96w/s RocketMQ组件 broker 核心业务组件 nameServe 保存broker 的ip、端口、上下线信息等。 类似注册中心 启动nameServe 时会调用 runserver 启动broker ,会默认读取/conf/broker.conf …

Netty实战(七)

EventLoop和线程模型 一、什么是线程模型二、EventLoop 接口2.14 Netty 4 中的 I/O 和事件处理 三、任务调度3.1 JDK 的任务调度 API3.2 使用 EventLoop 调度任务 四、实现细节4.1 线程管理4.2 EventLoop/线程的分配4.2.1 异步传输4.2.2 .阻塞传输 一、什么是线程模…

Linux(云计算)期末复习资料

1:linux概述 ​ Linux是一种自由、开放源代码的操作系统,它最初由芬兰的Linus Torvalds在1991年开发,目前已经成为世界上最流行的操作系统之一。Linux操作系统的特点是免费、稳定、安全、可定制、可移植性强、支持多任务、多用户等。 2&…

什么是半实物仿真平台自动驾驶半实物仿真平台有哪些?

文章目录 半实物仿真平台介绍自动驾驶半实物仿真平台介绍1.CARLA2.AirSim3.LGSVL Simulator 半实物仿真平台介绍 半实物仿真平台是一种综合利用虚拟仿真和实际硬件设备的仿真系统。它将虚拟环境和真实硬件设备结合起来,旨在提供更真实、更准确的仿真体验。 在半实…

Centos7单机部署Flink13.6及测试FinkCDC同步MySQL

一、背景 公司CDH6.3.2里面的版本是Flink1.12.0。而因为FlinkCDC2.0.0只支持Flink1.13.0以后,版本不匹配,所以只能升级版本。但是升级版本是个大工程,要编译、要parcel制作工具,而且是生产环境的升级,没办法因为要测试…