1.Swing的概述(JFrame和JDialog)

GUI全称是Graphical User Interface,及图形化用户界面。GUI可以让用户直接操作的图形化界面,包括窗口、菜单、按钮、工具栏和其他各种图形化界面元素。

Java针对GUI设计提供了丰富的类库,这些类库分别位于java.awt和java.swing包中,简称AWT和Swing。

AWT引入了大量的Windows函数,因此称为中重量级组件。

Swing是以AWT为基础构建的轻量级图形界面组件。

1. Swing概述

Swing是Java的图形用户界面(GUI)工具包,旨在提供丰富且可定制的界面组件,用于开发跨平台的桌面应用程序。它以抽象的窗口工具包(AWT)为基础,使跨平台应用程序可以使用可拔插的外观风格。

它是Java Foundation Classes(JFC)的一部分,设计用于替代早期的Abstract Window Toolkit(AWT)。

1.1 功能及特点

关于Swing的主要特点和概述:

  1. 跨平台性:Swing是基于Java的,因此可以实现跨平台的能力。这意味着您可以编写一次代码,并在Windows、Mac和Linux等操作系统上运行,而无需对源代码进行修改。

  2. 丰富的UI组件:Swing提供了大量的可定制的用户界面组件,如按钮、标签、下拉框、文本框、表格等。这些组件可以轻松地进行布局和样式的修改,以满足应用程序的特定需求。

  3. 可扩展性:Swing具有强大的扩展性,允许开发人员根据自己的需求创建自定义组件或修改现有的组件。使用Swing,您可以根据应用程序的要求创建独特的用户界面元素。

  4. MVC架构:Swing采用了Model-View-Controller(MVC)架构模式,该模式将应用程序的数据逻辑、用户界面和用户输入分离开来,以便更好地管理和维护代码。

  5. 支持轻量级绘图:与AWT相比,Swing使用了一种轻量级的绘图模型,这使得它能够提供更快的响应时间和更好的性能。

1.2 Swing组件

在java中所有的Swing组件都保存在javax.swing包中。

Swing组件的所有类都继承Container类,然后根据GUI的功能扩展了两个主要分支,分别是容器分支和组件分支。

容器分支是为了实现图形化用户界面窗口的容器而设计的,而组件分支则是为了实现向容器中填充数据、元素和交互组件等功能。

Swing组件继承关系

  • Container(容器):Container是一个抽象类,是Swing组件的父类。它表示一个包含其他组件的容器,用于存放和布局其他组件。Container提供添加和移除组件的方法,并通过布局管理器来确定组件的位置和大小。

  • Window(窗口):Window是一个抽象类,表示一个顶级窗口。它是所有窗口类的父类,包括JFrame、JDialog等。Window提供基本的窗口操作,如显示、隐藏、调整大小等。

  • JWindow:JWindow是继承自Window的Swing组件,它表示一个无边框的窗口。JWindow通常用于创建自定义的弹出窗口或者非模态的辅助窗口。

  • Frame(框架):Frame是继承自Window的Swing组件,它表示一个具有标题栏、边框和可调整大小的窗口。Frame通常用作应用程序的主窗口。

  • JFrame(窗体):JFrame是Swing应用程序中最基本的顶级窗口容器。它具有标题栏、边框和可调整大小的能力。

  • Dialog(对话框):Dialog是继承自Window的Swing组件,它表示一个模态对话框。Dialog通常用于获取用户输入或显示信息,并阻塞用户对其他窗口的操作。

  • JDialog:JDialog是基于Window的对话框类,用于创建模态或非模态的对话框窗口。它通常用于获取用户输入、显示信息或执行特定操作。

  • JComponent:JComponent是一个抽象类,是所有Swing组件的超类。它扩展自AWT的Component类,并提供了更多的扩展功能,如双缓冲、透明度控制等。

  • JPanel(面板):JPanel是一个轻量级容器,可用于组织和布局其他组件。它通常被用作JFrame的内容面板。

  • JDialog:JDialog是基于Window的对话框类,用于创建模态或非模态的对话框窗口。它通常用于获取用户输入、显示信息或执行特定操作。

  • JScrollPane(滚动面板):JScrollPane可以将任何其他组件(如文本框、列表)包装在一个可滚动的容器中,使得内容超出可视区域时可以滚动查看。

  • JMenuBar(菜单栏):JMenuBar是一个用于显示菜单的容器组件。它通常位于窗口的顶部,包含多个JMenu组件。

  • AbstractButton(抽象按钮):AbstractButton是一个抽象类,是所有按钮组件(如JButton、JCheckbox等)的父类。它提供了按钮的基本功能,如文本、图标、事件处理等。

  • JButton(按钮):JButton是一个可点击的按钮,用于触发事件。它可以显示文本、图标或两者结合。

  • JMenuItem(菜单项):JMenuItem是一个标准菜单中的一个选项。它可以被点击,并触发关联的动作。JMenuItem通常被放置在JMenu或JPopupMenu中。

  • JMenu(菜单):JMenu是一个用于显示菜单项的容器组件。它可以包含多个JMenuItem或JMenu,形成一个多级菜单。

  • JToggleButton(切换按钮):JToggleButton是一个可以切换状态的按钮。它可以表示两种状态(选中和未选中),并触发相关的动作。

  • JCheckBox(复选框):JCheckBox用于提供多个选项,用户可以从中可选或取消选项。它可以单独使用,也可以作为组件的一部分。

  • JRadioButton(单选按钮):JRadioButton用于提供一组互斥的选项,用户只能选择其中一个选项。

  • JComboBox(下拉列表框):JComboBox是一个组合框,可以用于在一个下拉列表中选择一个选项。用户可以点击下拉按钮展开选项列表。

  • JTextComponent:是用于编辑和显示文本内容的Swing组件的父类。JTextComponent可以用于单行或多行的文本输入和显示。

  • JTextField(文本框):JTextField是一个用于输入和显示单行文本的组件。它允许用户在文本框中输入文字,并可以通过编程方式获取输入的内容。

  • JTextArea(文本域):JTextArea是一个多行文本输入框,用于输入和显示大段的文本信息。

  • JPopupMenu(弹出菜单):JPopupMenu表示一个弹出式菜单,可在用户请求时显示。它通常用于响应鼠标右键点击,并提供上下文相关的操作选项。

  • JLabel(标签):JLabel用于显示文本或图像。通常用于GUI中提供说明、标题或其他需要展示静态文本的地方。

  • JTable(表格):JTable是一个用于显示和编辑表格数据的组件。它可以包含多列和多行的数据,并提供了丰富的功能来管理表格数据的展示和编辑。

  • JPasswordField(密码框):JPasswordField是一个用于输入密码的文本框。输入的文本内容会被隐藏,只显示一些特定字符(如星号)。

  • JList(列表):JList用于显示一个可选择的单元或一组单元的列表。用户可以从列表中选择一个或多个项目。

2.swing顶级容器

当涉及到Swing的主要顶级容器时,通常会提到三个容器,它们是JFrame、JDialog和JWindow。这些容器提供了不同的功能和特性,以满足不同类型的应用程序需求。

  • JFrame

    JFrame是Swing的主要顶级容器,它代表了一个标准的窗口。

    JFrame提供了基本的窗口功能,例如标题栏、最大化、最小化和关闭按钮等。它可以包含其他Swing组件,例如按钮、文本框和标签等。通常情况下,JFrame被用作应用程序的主窗口。

  • JDialog

    JDialog是一个对话框顶级容器,用于显示模态或非模态对话框。

    模态对话框是一个阻塞用户交互的窗口,直到用户完成对话框的操作,而非模态对话框则允许用户在对话框打开的同时进行其他操作。JDialog通常用于显示一些临时性的窗口,例如警告、确认框或消息框等。

  • JWindow

    JWindow是无边框的顶级窗口容器。

    它没有标题栏和边框,通常被用作自定义窗口的基础。JWindow可以用于创建特殊的窗口布局和样式,比如不需要标题栏和边框的弹出图形或动画窗口。

2.1 JFrame

JFrame是Swing中最常用的顶级容器之一,用于创建和管理可调整大小的窗口。它是一个独立存在的顶级容器(窗口),不能放置在其他容器里。

2.1.1 构造方法

以下是JFrame的构造方法以表格形式列出,并提供详细的举例说明:

构造方法 描述 举例
JFrame() 创建一个无标题的空白窗口。 JFrame frame = new JFrame();
JFrame(String title) 创建一个具有指定标题的窗口。 JFrame frame = new JFrame(“My Window”);
JFrame(String title, GraphicsConfiguration gc) 创建一个具有指定标题和GraphicsConfiguration对象的窗口。 GraphicsConfiguration gc = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().getDefaultConfiguration();
JFrame frame = new JFrame(“My Window”, gc);
JFrame(GraphicsConfiguration gc) 创建一个具有指定GraphicsConfiguration对象的无标题窗口。 GraphicsConfiguration gc = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().getDefaultConfiguration();
JFrame frame = new JFrame(gc);
JFrame(Rectangle bounds) 创建具有指定边界的无标题窗口。 JFrame frame = new JFrame(new Rectangle(50, 50, 400, 300));
JFrame(String title, Rectangle bounds) 创建具有指定标题和边界的窗口。 JFrame frame = new JFrame(“My Window”, new Rectangle(50, 50, 400, 300));
JFrame(Frame owner) 创建一个具有指定拥有者的无标题窗口。 Frame owner = new Frame();
JFrame frame = new JFrame(owner);
JFrame(String title, Frame owner) 创建一个具有指定标题和拥有者的窗口。 Frame owner = new Frame();
JFrame frame = new JFrame(“My Window”, owner);
JFrame(String title, Frame owner, GraphicsConfiguration gc) 创建具有指定标题、拥有者和GraphicsConfiguration对象的窗口。 Frame owner = new Frame();
GraphicsConfiguration gc = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().getDefaultConfiguration();
JFrame frame = new JFrame(“My Window”, owner, gc);
JFrame(Frame owner, GraphicsConfiguration gc) 创建具有指定拥有者和GraphicsConfiguration对象的无标题窗口。 Frame owner = new Frame();
GraphicsConfiguration gc = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().getDefaultConfiguration();
JFrame frame = new JFrame(owner, gc);

2.1.2 常用方法

好的,下面是一张表格,其中列出了 JFrame 类的常用方法及其详细举例:

方法 描述 举例
JFrame() 创建一个无标题的、不可调整大小的 JFrame 窗口 JFrame frame = new JFrame();
JFrame(String title) 创建一个具有指定标题的、不可调整大小的 JFrame 窗口 JFrame frame = new JFrame("My Window");
setTitle(String title) 设置 JFrame 窗口的标题 frame.setTitle("New Title");
setDefaultCloseOperation(i
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

酷小洋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值