Java Swing 图形界面开发简介

Java Swing 图形界面开发简介JavaSwingGUI 图形界面窗口开发基础教程 本教程将系统性地详细介绍 Swing 开发中常用的一些组件 布局管理器等相关知识技术 并且每章节都将通过代码实例展示实际应用 Swing 是 Java 为图形界面应用开发提供的一组工具包 是 Java 基础类的一部分 Swing 包含了构建图形界面 GUI 的各种组件 如 窗口 标签 按钮 文本框等 Swing 提供了许多比 AWT 更好的屏幕显示元素 使用纯 Java 实现 能够更好的兼容跨平台运行 JavaSwing 图形界面开发目录

本文链接: http://blog.csdn.net/xietansheng/article/details/

Java Swing GUI 图形界面窗口开发基础教程,本教程将系统性地详细介绍 Java Swing 开发中常用的一些组件、布局管理器等相关知识技术,并且每章节都将通过代码实例展示实际应用。

教程总目录: Java Swing 图形界面开发(目录)

1. Swing简介

Swing 是 Java 为图形界面应用开发提供的一组工具包,是 Java 基础类的一部分。

Swing 包含了构建图形界面(GUI)的各种组件,如: 窗口、标签、按钮、文本框等。

Swing 提供了许多比 AWT 更好的屏幕显示元素,使用纯 Java 实现,能够更好的兼容跨平台运行。

为了和 AWT 组件区分,Swing 组件在javax.swing.*包下,类名均以 J 开头,例如: JFrame、JLabel、JButton等。

2. Swing组件

一个 Java 的图形界面,由各种不同类型的“元素”组成,例如: 窗口、菜单栏、对话框、标签、按钮、文本框等等,这些“元素”统一被称为 组件Component)。

组件按照不同的功能,可分为 顶层容器中间容器基本组件。一个简单窗口的组成,如下层级结构所示:

  • 顶层容器
    • 菜单栏
    • 中间容器
      • 基本组件
      • 基本组件

组件类型的继承关系:

  • 顶层容器 属于窗口类组件,继承自java.awt.Window
  • 中间容器 和 基本组件 继承自javax.swing.JComponent

2.1 顶层容器

顶层容器属于窗口类组件,可以独立显示,一个图形界面至少需要一个窗口,例如:

# 组件 描述
1 JFrame 一个普通的窗口(绝大多数 Swing 图形界面程序使用 JFrame 作为顶层容器)
2 JDialog 对话框

2.2 中间容器

中间容器充当基本组件的载体,不可独立显示。中间容器可以添加若干基本组件(也可以嵌套添加中间容器),对容器内的组件进行管理,类似于给各种复杂的组件进行分组管理。最顶层的一个中间容器必须依托在顶层容器(窗口)内。

常用的中间容器(面板):

# 组件 描述
1 JPanel 一般轻量级面板容器组件
2 JScrollPane 带滚动条的,可以水平和垂直滚动的面板组件
3 JSplitPane 分隔面板
4 JTabbedPane 选项卡面板
5 JLayeredPane 层级面板

特殊的中间容器:

# 组件 描述
1 JMenuBar 菜单栏
2 JToolBar 工具栏
3 JPopupMenu 弹出菜单
4 JInternalFrame 内部窗口

2.3 基本组件

基本组件是直接实现人机交互的组件。

常用的简单的基本组件:

# 组件 描述
1 JLabel 标签
2 JButton 按钮
3 JRadioButton 单选按钮
4 JCheckBox 复选框
5 JToggleButton 开关按钮
6 JTextField 文本框
7 JPasswordField 密码框
8 JTextArea 文本区域
9 JComboBox 下拉列表框
10 JList 列表
11 JProgressBar 进度条
12 JSlider 滑块

选取器组件:

# 组件 描述
1 JFileChooser 文件选取器
2 JColorChooser 颜色选取器

其他较为复杂的基本组件:

# 组件 描述
1 JTable 表格
2 JTree

3. 布局管理器

Swing 的各种组件(JComponent)添加到面板容器中(JPanel),需要给面板容器指定布局管理器(LayoutManager),明确容器(Container)内的各个组件之间的排列布局方式。

常用的布局管理器:

# 布局管理器 描述
1 FlowLayout 流式布局,按组件加入的顺序,按水平方向排列,排满一行换下一行继续排列。
2 GridLayout 网格布局,把Container按指定行列数分隔出若干网格,每一个网格按顺序放置一个控件。
3 GridBagLayout 网格袋布局,按网格划分Container,每个组件可占用一个或多个网格,可将组件垂直、水平或沿它们的基线对齐。
4 BoxLayout 箱式布局,将Container中的多个组件按 水平 或 垂直 的方式排列。
5 GroupLayout 分组布局,将组件按层次分组(串行 或 并行),分别确定 组件组 在 水平 和 垂直 方向上的位置。
6 CardLayout 卡片布局,将Container中的每个组件看作一张卡片,一次只能显示一张卡片,默认显示第一张卡片。
7 BorderLayout 边界布局,把Container按方位分为 5 个区域(东、西、南、北、中),每个区域放置一个组件。
8 SpringLayout 弹性布局,通过定义组件四条边的坐标位置来实现布局。
9 null 绝对布局,通过设置组件在Container中的坐标位置来放置组件。

4. 代码实例: 一个简单的窗口程序

package com.xiets.swing; import javax.swing.*; public class Main { 
    public static void main(String[] args) { 
    // 1. 创建一个顶层容器(窗口) JFrame jf = new JFrame("测试窗口"); // 创建窗口 jf.setSize(250, 250); // 设置窗口大小 jf.setLocationRelativeTo(null); // 把窗口位置设置到屏幕中心 jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); // 当点击窗口的关闭按钮时退出程序(没有这一句,程序不会退出) // 2. 创建中间容器(面板容器) JPanel panel = new JPanel(); // 创建面板容器,使用默认的布局管理器 // 3. 创建一个基本组件(按钮),并添加到 面板容器 中 JButton btn = new JButton("测试按钮"); panel.add(btn); // 4. 把 面板容器 作为窗口的内容面板 设置到 窗口 jf.setContentPane(panel); // 5. 显示窗口,前面创建的信息都在内存中,通过 jf.setVisible(true) 把内存中的窗口显示在屏幕上。 jf.setVisible(true); } } 

结果展示:

result.png


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/232355.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • pve安装docker图形化_怎么安装docker

    pve安装docker图形化_怎么安装docker基本相当于转载,但我光贴图也不行啊,还是把步骤加上去年年底这NUC到手时,就装PVE练手,然而最后做主力挂机的是那会买的个1037U小主机当时就尝试过装LibreELEC,结果是接显示器黑屏不过后来我直接在宿主机上装桌面和Kodi,但是吧那源里的Kodi是17的对于x265是软解。。。怎么装当然是看的值得买上的这个人家是OMV咱这是PVE都是装桌面再装KODI,但是为了保持纯净的PVE所以才想直通…

    2025年6月23日
    3
  • 不存在从std::string到int的适当转换函数(字符串转long类型)

    std::string类型转换为usignedlong,usignedlong类型别名ULONGstd::stringsStationID=”123″;ULONGnStationID=atol(sStationID.c_str());

    2022年4月15日
    123
  • 同步传输与异步传输相比_以下效率最高的数据交换控制方式

    同步传输与异步传输相比_以下效率最高的数据交换控制方式在网络通信过程中,通信双方要交换数据,需要高度的协同工作。为了正确的解释信号,接收方必须确切地知道信号应当何时接收和处理,因此定时是至关重要的。在计算机网络中,定时的因素称为位同步。同步是要接收方按照发送方发送的每个位的起止时刻和速率来接收数据,否则会产生误差。通常可以采用同步或异步的传输方式对位进行同步处理。1.异步传输(AsynchronousTransmission):异步传输将比

    2025年11月22日
    4
  • pycharm 2021.12.13最新版激活【最新永久激活】

    (pycharm 2021.12.13最新版激活)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html2JTX0APX6F-eyJsa…

    2022年3月30日
    115
  • centos7系统更新命令_centos 更新

    centos7系统更新命令_centos 更新1.查看网络IP ifconfig2.下载命令 wget+网址3.安装 yum-y install + 目标4.删除文件 sudo rm 文件所在目录/目标强制删除文件 rm -f删除目录 rm -rf5.复制一个文件到另一个文件夹sudo cp /文件夹/文件 /另一个文件夹6.对一些文件进行读写sudo vim 文件名7….

    2022年8月18日
    10
  • C++中sizeof 和 strlen 区别

    C++中sizeof 和 strlen 区别最近公司要求 又开始学习 C 但是看到 sizeof 和 strlen 忽然有点混淆 不理解区别 下面的两个显著不同方便快速记忆 1 sizeof 是运算符 strlen 是函数 2 charstr 20 0 inta strlen str a 10 intb sizeof str 而 b 20

    2025年9月3日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号