Java 创建图形用户界面(GUI)入门指南(Swing库 JFrame 类)概述

探索Java Swing的奇妙世界

目录概览

引言

核心理念

  • Java Swing 的架构精髓

Java Swing,这个为Java量身定做的GUI工具包,是Java基础类库中的一员,它基于Java AWT构建,提供了丰富的轻量级、可定制的图形用户界面(GUI)组件。

相较于AWT,Swing提供了更多优秀的屏幕显示元素,展现出更高的灵活性和可定制性,同时在跨平台性能上也更胜一筹。

Swing架构图

  • 组件与容器的协同

Java Swing 提供了众多组件(例如按钮、标签、文本框等)和容器(例如面板、框架等),组件负责展示信息和接收用户输入,而容器则负责管理和布局这些组件。

  • 布局管理器的魔法

布局管理器在Java Swing中扮演着至关重要的角色,它决定了组件在容器中的位置和大小。Java Swing提供了多种布局管理器,如流式布局、边界布局和网格布局等,以适应不同的布局需求。

  • 跨平台的天赋

Java Swing的跨平台能力是其显著优势之一。Swing使用轻量级组件,这些组件不直接与特定操作系统交互,而是通过Java的图形引擎来绘制,因此可以在多种操作系统上运行,包括Windows、macOS和Linux,且在任何平台上都能保持一致的外观和行为。

组件与容器的奥秘

组件根据功能不同,可以分为顶层容器(窗口)、中间容器(面板)和基本组件:

  • 顶层容器(窗口):窗口类组件,可以独立显示,一个图形界面至少需要一个窗口。

例如:JFrame(大多数Swing图形界面程序使用JFrame作为顶层容器)、JDialog(对话框)。

  • 中间容器(面板):作为基本组件的载体,不可独立显示。

最顶层的中间容器必须依托在顶层容器(窗口)内。

常用的中间容器(面板)包括带滚动条的面板组件、JSplitPane(分隔面板)、JTabbedPane(选项卡面板)、JLayeredPane(层级面板)。

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

常用的基本组件包括JButton(按钮)、JCheckBox(复选框)、JComboBox(下拉列表框)、JLabel(标签)、JRadioButton(单选按钮)、JTextField(单行文本框)、JTextArea(多行文本框)、JPasswordField(单行密码文本框)。

布局管理器的魔法

布局管理器控制组件在容器中的位置和大小排列方式,以实现灵活和自适应的界面布局。

GridLayout(网格布局)

  • 特点:将容器划分为规则的行列网格。

  • 组件放置规则:

  • 所有单元格大小相同,会根据容器的大小自动调整。

  • 组件按照从左到右、从上到下的顺序依次填充单元格。

  • 常用构造函数:

java
public GridLayout(int rows, int cols)
public GridLayout(int rows, int cols, int hgap, int vgap)

其中 rows 参数表示行数, cols 参数表示列数, hgapvgap 参数分别表示水平和垂直间距。

  • 代码示例

java
frame.setLayout(new GridLayout(3, 2)); // 3行2列

GridBagLayout(网格包布局)

  • 特点:是最灵活和强大的布局管理器,但也是最复杂的。

  • 组件放置规则:

  • 可以为每个组件指定详细的位置和大小约束。

  • 支持跨行、跨列的组件。

  • 代码示例

```java
JPanel panel = new JPanel(new GridBagLayout());
GridBagConstraints constraints = new GridBagConstraints();

JButton button1 = new JButton("Button 1");
constraints.gridx = 0;
constraints.gridy = 0;
panel.add(button1,

文章整理自互联网,只做测试使用。发布者:Lomu,转转请注明出处:https://www.it1024doc.com/4621.html

(0)
LomuLomu
上一篇 2024 年 12 月 28 日 上午8:24
下一篇 2024 年 12 月 28 日 上午9:25

相关推荐

  • Mysql

    MySQL 学习整理 MySQL 基础架构 最上层的客户端所包含的服务并不是 MySQL 独有的,大多数基于网络的客户端/服务器工具或服务器都有类似的服务,包括连接处理、身份验证、确保安全性等。 第二层包含了大多数 MySQL 的核心功能,包括查询解析、分析、优化、以及所有的内置函数(例如,日期、时间、数学和加密函数),所有跨存储引擎的功能也都在这一层实现:…

    2024 年 12 月 28 日
    9900
  • 世界,您好!

    欢迎使用 WordPress。这是您的第一篇文章。编辑或删除它,然后开始写作吧!

    未分类 2024 年 6 月 20 日
    41800
  • Java怎样实现将数据导出为Word文档

    文章首发于我的博客:Java怎样实现将数据导出为Word文档 – Liu Zijian’s Blog 我们在开发一些系统的时候,例如OA系统,经常能遇到将审批单数据导出为word和excel文档的需求,导出为excel是比较简单的,因为excel有单元格来供我们定位数据位置,但是word文档的格式不像表格那样可以轻松的定位,要想将数据导出为一些带有图片和表格…

    2025 年 1 月 12 日
    12300
  • JAVA 图形界面编程 AWT篇(1)

    前言 为了完成JAVA课程设计,我踏上了Java图形界面编程的学习之旅,通过撰写博客记录我的学习过程和心得。 AWT(Abstract Window Toolkit)概览 AWT(抽象窗口工具包)是Java早期的图形用户界面(GUI)框架之一,主要被用于构建桌面应用程序的图形界面。它最初在JDK 1.0版本中作为Java GUI的核心库引入,目的是提供一个能…

    未分类 2024 年 12 月 28 日
    11600
  • keycloak~巧用client-scope实现token字段和userinfo接口的授权

    keycloak中的client-scope允许你为每个客户端分配scope,而scope就是授权范围,它直接影响了token中的内容,及userinfo端点可以获取到的用户信息,这块我们可以通过自定义scope/mapper,来实现粒度的控制,并且这个mapper可以控制添加到token,或者添加到userinfo端点,这两块配置也是独立的,下面我们通过一…

    2025 年 1 月 16 日
    14200

发表回复

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

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信