JavaSwingGUI从小白到大神-1
背景
首先本文是一个系列的文章,起名为《Java Swing GUi从小白到大神》,主要介绍Java Swing相关概念和实践应用。目前JavaSwingGUI很少作为界面的开发框架,但是对于新手快速掌握Java体系,了解面向对象理念很有必要,同时也能让你了解软件前后端的沟通,本篇是系列博文的第一篇,我们开始吧。
文章概览
- JavaSwingGUI基础内容
- 如何使用标签和按钮组件
- 如何使用布局管理器组件
1. JavaSwingGUI基础内容
1. 组件的层次关系
先从整体上了解组件关系,知道大概有哪些组件,从最顶层组件到最低层的组件。
graph TB
A(java.awt.Component) --> B(java.awt.Container)
B(java.awt.Container) --> C(javax.swing.JComponent)
B(java.awt.Container) --> D(java.awt.Window)
C(javax.swing.JComponent) --> E(中间容器组件)
C(javax.swing.JComponent) --> F(基本组件)
D(java.awt.Window) --> G(独立显示组件)
|
|
2. 中间容器组件介绍
组件名称 | 作用 |
---|---|
JPanel | 称为面板,最常用的中间容器,通常与布局管理器配合使用 |
JScrollPane | 称为滚动面板,包装大内容的组件,支持内容的滚动显示,例如表格、列表或文本区域 |
JSplitPane | 称为分割面板,用于将界面分为两个区域,可调整大小 |
JTabbedPane | 称为卡片面板,用于在同一区域切换多个选项卡 |
JToolBar | 称为工具栏,用于添加按钮,作为快捷按钮 |
JLayeredPane | 称为层叠面板,用于管理组件的 Z 轴顺序(层次) |
JDesktopPane | 称为虚拟桌面容器,用于管理内部窗口(JInternalFrame) |
JInternalFrame | 称为内部窗口,通常嵌套在 JDesktopPane 中 |
中间容器组件的特性,可以添加多个组件,并且可以设置布局管理器,以实现组件的布局和显示。
3. 基本组件介绍
- 按钮类:
- JButton:普通按钮。
- JCheckBox:复选框按钮。
- JRadioButton:单选按钮。
- JToggleButton:可切换的按钮。
- 文本类:
- JLabel:文本标签,用于显示静态文本或图标。
- JTextField:单行文本输入框。
- JPasswordField:密码输入框。
- JTextArea:多行文本区域。
- JEditorPane:支持 HTML 和 RTF 的编辑器。
- JTextPane:支持富文本的多功能文本组件。
- 菜单类:
- JMenuBar:菜单栏。
- JMenu:菜单。
- JMenuItem:菜单项。
- JCheckBoxMenuItem:带复选框的菜单项。
- JRadioButtonMenuItem:带单选按钮的菜单项。
- 选择类:
- JComboBox:下拉列表框。
- JList:列表。
- JSpinner:数值选择器。
- 表格和树:
- JTable:表格,用于显示二维数据。
- JTree:树,用于显示分层数据。
- 进度条和滑块:
- JProgressBar:进度条。
- JSlider:滑块。
- 对话框类:
- JOptionPane:标准对话框。
- 其他组件:
- JSeparator:分隔符,用于在菜单或工具栏中分隔组件。
- JToolTip:工具提示。
- JViewport:视口,通常与 JScrollPane 配合使用。
4. 独立显示组件介绍
-
JFrame:窗口容器,通常用作主程序窗口。
-
JDialog:对话框容器,用于显示模态或非模态对话框。
-
JApplet:嵌入在浏览器中的小程序(已过时)。
-
JWindow:没有标题栏和边框的窗口。
-
特点:
- 直接继承自 java.awt.Container(间接继承 Component)。
- 每个顶级组件都有一个 JRootPane 作为其内容容器。
- 不可以直接向顶级组件添加普通组件,需要通过 Content Pane 添加。
每个顶层容器包含一个 JRootPane,它是顶层容器的根容器
。
5. JComponent类介绍
JComponent 类是所有轻量级组件的父类,中间件组件和基础组件都继承它,JComponent类有如下九大特性。
graph LR
subgraph left[":::yellow 下侧框 ::"]
direction TB
left_content["- 为残疾无障碍支持<br>- 指搓支持<br>- 双缓冲支持组件频繁改变<br>- 键绑定让按键似图标"]
end
subgraph right[":::yellow 上侧框 ::"]
direction TB
right_content["- Tool tips 提示功能<br>- 绘画边框功能<br>- 定制桌面功能<br>- 自定义属性<br>- 对布局功能的支持"]
end
center["JComponent 类功能特性"]
center --> left_content
center --> right_content
2. 如何使用标签和按钮组件
按钮与标签是常用的基本组件,需要熟练掌握,下面是一个简单的示例。
按钮与标签示例代码
|
|
3. 如何使用布局管理器组件
布局管理器是在 内容面板 上布局的,基本组件放入内容面板时,根据内容面板提前设置好的布局摆放,其实就是组件的摆放方式就叫 布局管理器 ,大概 9 种摆放方式,逐一了解下。
1. BorderLayout布局管理器
BorderLayout 布局管理器翻译为 边界布局 布局管理器,特点是将内容面板分为 上下左右中 五个区域,分别对应 North、South、East、West、Center 。
BorderLayout布局管理器示例代码
|
|
2. FlowLayout布局管理器
FlowLayout 布局管理器翻译为 流式布局管理器 ,组件从左到右(默认情况下)按顺序排列,直到当前行放不下更多的组件时,会自动换行并开始新的一行。这种布局方式很适合用来放置一些数量不定的组件,尤其是在窗口尺寸变化时能够灵活地调整。
FlowLayout布局管理器示例代码
|
|
3. GridLayout布局管理器
GridLayout 布局管理器翻译为 网格布局管理器 ,这个布局管理器的特点像围棋盘,将内容面板分成网格的布局管理器,根据行和列数内容面板被分割出对应的格子,每个单元格的大小都是相同的。
GridLayout布局管理器示例代码
|
|
4. GridBagLayout布局管理器
GridBagLayout 布局管理器翻译为 网格包布局管理器 ,Grid 代表网格,表示该布局依然是将组件放置在一个网格(行和列)中。Bag 代表包,意味着网格的大小和形状可以“包裹”组件,允许组件跨越多个单元格,形成更灵活的布局。
- gridx:表示组件所在的列索引,从左到右,索引从 0 开始。
- gridy:表示组件所在的行索引,从上到下,索引从 0 开始。
- weightx (水平拉伸权重): 用于指定网格单元在水平和垂直方向上的 “拉伸权重”,如果两个组件的 weightx 分别是 1 和 2,那么它们将按照 1:2 的比例分配多余的水平空间。
- weighty (垂直拉伸权重):用于指定网格单元在水平和垂直方向上的 “拉伸权重”,同理。
- gridwidth:控制组件在网格中的列跨度。
- gridheight:控制组件在网格中的行跨度。
- anchor:控制组件在未填满的分配空间中的对齐位置。注意与 fill 配合,只有在 fill 不填充空间时(如 NONE)或组件未完全占用分配空间时,anchor 才会生效。
gridx、gridy、weightx、weighty、anchor示例代码
|
|
GridBagLayout布局管理器示例代码
|
|
5. CardLayout布局管理器
CardLayout 布局管理器翻译为 卡片布局管理器 ,内容面板设为卡片布局后,面容面板内的每一个组件当做一个卡片,一次仅有一个组件可见,并且可以动态的切换组件。
代码CardLayout布局管理器
|
|
6. BoxLayout布局管理器
BoxLayout 布局管理器翻译为 箱式布局管理器 ,可将内容面板设置为垂直排列组件或水平排列组件,它是将组件沿着指定轴(水平或垂直)排列的一种布局管理器,常用于创建垂直或水平排列的组件。
BoxLayout布局管理器示例代码
|
|
7. SpringLayout布局管理器
SpringLayout 布局管理器翻译为 弹簧布局管理器 ,这种布局管理器通过设置组件之间的约束关系来定位组件,设置组件的边界(如上、下、左、右)相对于容器边界或其他组件的距离。
SpringLayout布局管理器示例代码
|
|
8. GroupLayout布局管理器
GroupLayout 布局管理器翻译为 组布局管理器 ,这种布局管理器特点是把多组件按区域划分到不同的Group中,再根据各Group相对水平轴和垂直轴的排列方式管理组件。
代码GroupLayout布局管理器
|
|
9. 自定义布局管理器
自定义布局管理器需要继承 LayoutManager 接口,并实现其方法。
自定义布局管理器示例代码
|
|
总结
本文主要介绍了JavaSwingGui的基本框架,基本概念,以及如何使用布局管理器来管理组件的位置和大小。整体概念和布局管理器是重点,理解了布局管理器,对JavaSwingGui的布局管理具有更深刻的理解。
文章作者 会写代码的小郎中
上次更新 2025-01-02
许可协议 CC BY-NC-ND 4.0