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。

(1)顶层容器

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

组件

描述

一个普通的窗口(绝大多数 Swing 图形界面程序使用 JFrame 作为顶层容器)

(2)中间容器

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

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

特殊的中间容器:

(3)基本组件

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

常用的简单的基本组件:

选取器组件:

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

3. 布局管理器

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

常用的布局管理器:

#

布局管理器

描述

1

流式布局,按组件加入的顺序,按水平方向排列,排满一行换下一行继续排列。

2

网格布局,把Container按指定行列数分隔出若干网格,每一个网格按顺序放置一个控件。

3

网格袋布局,按网格划分Container,每个组件可占用一个或多个网格,可将组件垂直、水平或沿它们的基线对齐。

4

箱式布局,将Container中的多个组件按 水平 或 垂直 的方式排列。

5

分组布局,将组件按层次分组(串行 或 并行),分别确定 组件组 在 水平 和 垂直 方向上的位置。

6

卡片布局,将Container中的每个组件看作一张卡片,一次只能显示一张卡片,默认显示第一张卡片。

7

边界布局,把Container按方位分为 5 个区域(东、西、南、北、中),每个区域放置一个组件。

8

弹性布局,通过定义组件四条边的坐标位置来实现布局。

9

绝对布局,通过设置组件在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);

}

}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

结果展示:

java怎么开发图形界面_Java Swing 图形界面开发简介相关推荐

  1. java表格界面_Java自学-图形界面 表格

    Swing 使用 JTable详解 示例 1 : 基本表格 显示一个Table需要两组数据 一维数组: String[]columnNames 表示表格的标题 二维数组: String[][] her ...

  2. java 图形 登录_java登录图形界面 - osc_994n5tsc的个人空间 - OSCHINA - 中文开源技术交流社区...

    编写程序,利用JtextField和JpasswordField分别接收用户输入的用户名和密码,并对用户输入的密码进行检验.对于每个用户名有三次密码输入机会. package beizi; impor ...

  3. java qq ui界面_java swing 创建一个简单的QQ界面教程

    记录自己用java swing做的第一个简易界面. LoginAction.java package com.QQUI0819; import javax.swing.*; import java.a ...

  4. java 窗体添加背景图片_Java Swing实现窗体添加背景图片的2种方法详解

    本文实例讲述了java Swing实现窗体添加背景图片的2种方法.分享给大家供大家参考,具体如下: 在美化程序时,常常需要在窗体上添加背景图片.通过搜索和测试,发现了2种有效方式.下面分别介绍. 1. ...

  5. java jtable 复选框_java swing如何在JTable一个单元格添加多个复选框

    展开全部 java swing中在jTable中添加多个复选框的方32313133353236313431303231363533e59b9ee7ad9431333337616566式如下:impor ...

  6. 用java设置复选框_Java Swing组件复选框JCheckBox用法示例

    这篇文章主要介绍了Java Swing组件复选框JCheckBox用法,结合具体实例形式分析了Swing复选框JCheckBox简单用法与相关操作注意事项,需要的朋友可以参考下 本文实例讲述了Java ...

  7. java 删除图形界面_Java图形化界面报错?

    import java.awt.*; import java.awt.event.*; import javax.swing.*; import 测试新界面.Panel.DeletePlayer; i ...

  8. java图形界面_Java自学-图形界面 面板

    Swing 四种常见面板 示例 1 : 基本面板 JPanel即为基本面板 面板和JFrame一样都是容器,不过面板一般用来充当中间容器,把组件放在面板上,然后再把面板放在窗体上. 一旦移动一个面板 ...

  9. java图形用户登录界面_java图形化界面实现登录窗口

    登录窗口一般很常见,现在让我们自己也来写一个吧! ps:很多import是重复的,是因为我是分了几个类写的,必须单独导入 //模拟qq登录窗口 import java.awt.*; import ja ...

最新文章

  1. 股票自动交易python下单接口_用 Python 写了个简单的股票量化交易框架
  2. 【原】移动端界面的适配
  3. (014)java后台开发之用tomcat发布自己的javaWeb项目
  4. Oracle 11G R2 RAC中的scan ip 的用途和基本原理【转】
  5. sqli-labs 30到65关
  6. R开发(part3)--概率基础和R语言
  7. T-SQL :SQL Server 定义数据完整性 5大约束
  8. PHP个人博客网站设计 学生PHP个人博客网页源码 PHP MYSQL动态网站作品
  9. android设置图片自适应控件大小
  10. 【教程】贺岁教程之--C# getpost实例
  11. 批量修改Dell服务器远程管理卡iDRAC密码
  12. 怎么看电脑有没有蓝牙_怎么选购电脑音响?挑选到性价比高的电脑桌面音箱,看完这篇推荐指南就懂了!...
  13. 在Windows下的virtualenv中搭建Flask+MySQLDb开发环境
  14. 在OpenFOAM中获取网格详细信息
  15. 2022年全国大学生电子设计大赛省赛A题
  16. Tomcat启动页面中文乱码解决方法
  17. 数字图像处理 冈萨雷斯 (内含算法链接)
  18. linux如何编辑配置文件,如何编辑保存LINUX的配置文件
  19. java webp 图片处理_Java处理Webp图片格式转换的示例代码
  20. Exchange2013中POP3和IMAP4

热门文章

  1. leetcode hot100 梳理
  2. Eclipse控制台中的中文输出乱码问题
  3. pytorch 12 支持任意维度数据的梯度平衡机制GHM Loss的实现(支持ignore_index、class_weight,支持反向传播训练,支持多分类)
  4. C语言编程中void什么意思,程序设计中遇到的void到底是什么意思
  5. Windows安装程序遇到错误:0x80240037
  6. Win10 新版Edge浏览器Flash Player不兼容,总是显示flash与地区不兼容(完美解决)
  7. Ollydbg查看内存数据并修改
  8. 一次递减代码matlab,DEA算法学习系列之三:一次性求解CCR模型所有DMU参数——效率、规模效益、有效性特征、调整值的matlab代码...
  9. [普及] NOIP 2012 文化之旅
  10. 数据库课程设计(电脑配件库存管理系统)