简述Java图形用户界面设计(Swing)
Swing

Swing(曹雯君)Swing是一个为Java设计的图形用户界面(GUI)工具包。
Swing是Java API的一部分。
Swing包括了GUI的元器件,如:文本框,按钮,分隔窗格和表。
Swing用于提供一组“轻量级”(全部是 Java 语言)组件,它们用纯Java写成,所以同样可以跨平台使用。
轻量级元件的缺点则是执行速度较慢,优点就是可以在所有平台上采用统一的行为。
1. 30分钟快速上手1.1 Swing和AWT的关系与区别•关系Swing是一个用于开发JAVA应用程序用户界面的开发工具包。
以抽象窗口包(AWT)为基础使跨平台应用程序可以使用任何可插拔的外观风格。
Swing API的大部分是AWT的补充扩展而不是直接的替代。
Swing用来绘制轻量级组件的核心渲染功能是由Java 2D提供的,这是AWT的一部分。
然而,轻量级和重量级组件在同一个应用中使用会导致Z-order不兼容。
•区别Swing为基于窗体的GUI应用开发设计,为Java跨平台特性提供了卓越的支持,它完全没有本地代码,不受操作系统的影响,做到了真正的跨平台应用,甚至能够提供本地窗口系统不支持的其他特性。
因此比AWT具有更强的实用性,同时比AWT程序拥有更加精致的外观感受。
AWT只提供基本的组件,使很多设计变得复杂,且无法在不同的平台下保持显示风格的一致性。
例如:如果建立一个按钮(Button)对象,就会有一个按钮对象会请求底层操作系统创建一个真正的按钮。
即在WindowsNT上执行那么创建的就是WindowsNT按钮;在Linux 上执行,那么创建的就是Linux按钮。
因此AWT组件外观会受到底层操作系统的影响。
1.2 Swing操作步骤1.2.1 导入Swing包import javax.swing.*;大部分的Swing程序用到AWT的基础底层结构和事件模型,因此需要导入两个包:import java.awt.*;import java.awt.event.*;如果图形界面中包括了事件处理,那么还需要导入事件处理包:import.javax.swing.event.*;1.2.2 选择界面风格Swing允许选择程序的图形界面风格常用的有Java风格,Windows风格等。
Java Swing图形界面开发(第8章)

ComboBoxModel来构造JComboBox,除了要实现ComboBoxModel的
两个方法外,还必须实现ListModel定义的4个方法。
24
介绍JList时,曾提到“AbstractListModel”抽象类,
其已经实现了ListModel接口中的addListDataListener()和
7
8.1.3 使用ListModel方式创建列表框 ListModel是一个接口,其主要功能是定义一些方法, 让JList组件取得每个项目的值,并可限定项目的显示时间
与方式。
表8.1 ListModel接口定义的方法
8
AbstractListModel抽象类:
只有实现ListModel接口中的所有方法,才能利用构造器建立JList。
表8.2 下拉列表框的构造器
说明:与JList一样,可通过“数组”和“Vector”创建下拉列表框对象。
21
8.2.1 使用数组和Vector创建下拉列表框
22
运行结果:
说明:● 使用Vector和数组差不多。 ● JComboBox控件有addItem方法,此方法在 JList中不具备。
映山红
不过,若要实现ListModel所有的方法比较麻烦,因为一般不会用
addListDataListener()和removeListDataListener()这两个方法。
因此,Java提供了“AbstractListModel”抽象类,此抽象类已经实现 addListDataListener()与removeListDataListener()两个方法。 只要继承AbstractListModel类,则无须实现上述两个方法,只需实 现getElementAt()与getSize()方法即可。
Java图形用户界面:Swing和JavaFX的简单介绍

Java图形用户界面:Swing和JavaFX的简单介绍在计算机科学领域中,图形用户界面(GUI)是指通过图形、图像和视觉元素来与计算机程序进行交互的界面。
Java作为一种广泛使用的编程语言,提供了多种选择来构建图形用户界面。
其中,Swing和JavaFX是最常用的两种选择。
本文将对这两种Java GUI工具进行简单介绍,并探讨它们的特点和用途。
一、SwingSwing是Java提供的一套GUI工具包,旨在提供一种跨平台的解决方案。
它是在AWT(抽象窗口工具包)的基础上开发的,为开发者提供了一系列可重用的GUI组件,如按钮、文本框、标签等。
Swing的特点之一是其轻量级性能,它不依赖于操作系统的原生GUI组件,而是完全由Java代码实现。
这使得Swing应用程序可以在不同操作系统上以相同的方式运行,而无需进行任何修改。
Swing提供了丰富的组件库,使得开发者可以轻松构建复杂的用户界面。
它还支持可定制的外观和感觉,开发者可以根据自己的需求选择不同的外观主题。
此外,Swing还提供了一些高级组件,如表格、树形结构和滚动面板,使得开发者可以创建更复杂和功能强大的界面。
然而,Swing也有一些缺点。
由于其完全由Java代码实现的特性,Swing应用程序可能在性能方面存在一些问题。
尤其是在处理大量数据或复杂图形时,Swing的性能可能会受到影响。
此外,Swing的外观和感觉可能与操作系统的原生界面存在一些差异,这可能会对用户体验造成一定的影响。
二、JavaFXJavaFX是Java平台上的另一种GUI工具,它提供了更现代化和富有表现力的用户界面。
与Swing不同,JavaFX使用了一种基于场景图的方式来构建界面。
它通过使用FXML(一种基于XML的用户界面描述语言)和CSS(层叠样式表)来分离界面的结构和样式,使得界面的定制变得更加灵活和简单。
JavaFX提供了许多内置的UI组件,如按钮、文本框、标签等,这些组件具有更丰富的视觉效果和交互特性。
大二java课程设计swing

大二java课程设计swing一、教学目标本课程的教学目标是使学生掌握Java编程语言中的Swing图形用户界面(GUI)开发技术。
通过本课程的学习,学生将能够:1.理解Swing组件的基本原理和用法,如JFrame、JButton、JTextField等。
2.熟练使用布局管理器,如FlowLayout、BorderLayout、GridLayout等,来设计窗口布局。
3.掌握事件处理机制,能够编写事件监听器来响应用户操作。
4.能够使用Swing绘图工具类,如Graphics、Graphics2D等,实现简单的图形绘制。
5.理解菜单栏、工具栏、状态栏等高级组件的使用方法。
6.掌握多线程编程的基本概念,能够利用Swing实现多线程应用。
二、教学内容本课程的教学内容主要包括以下几个部分:1.Swing概述:介绍Swing的发展历程、特点和基本使用方法。
2.Swing组件:详细讲解常用的Swing组件,如按钮、文本框、列表、组合框等。
3.布局管理器:介绍各种布局管理器的原理和用法,并通过实例展示如何设计美观的窗口布局。
4.事件处理:讲解事件监听器的原理和用法,以及如何处理用户输入事件、动作事件等。
5.绘图技术:介绍Swing的绘图工具类,如Graphics、Graphics2D等,并通过实例展示如何绘制基本图形和图像。
6.高级组件:讲解菜单栏、工具栏、状态栏等高级组件的使用方法,以及如何实现菜单项的勾选效果。
7.多线程编程:介绍多线程编程的基本概念,讲解如何在Swing应用程序中实现多线程,以及线程同步的方法。
三、教学方法为了提高学生的学习兴趣和主动性,本课程将采用以下教学方法:1.讲授法:教师讲解Swing的基本概念、原理和用法,引导学生理解并掌握相关知识。
2.案例分析法:通过分析典型实例,让学生了解Swing组件的应用场景和实现方法。
3.实验法:安排上机实验,让学生动手实践,巩固所学知识,提高编程能力。
编写swing程序的主要步骤

编写swing程序的主要步骤好的,要使用 Java Swing 编写图形用户界面 (GUI) 应用程序,可以按照以下主要步骤进行操作:1. 设计用户界面:首先,需要使用 Swing 组件设计应用程序的用户界面。
这可以通过使用 Java 的可视化设计工具,如 NetBeans IDE 或 Eclipse IDE 中的 Swing 设计器来完成。
这些工具提供了一个图形化界面,可以通过拖放和调整组件的大小和位置来创建用户界面。
2. 创建组件:在设计用户界面后,可以使用 Java 代码创建这些组件。
这可以通过扩展 Swing 类并创建组件对象来完成。
例如,可以扩展 JFrame 类创建一个窗口,扩展JTextField 类创建一个文本框,扩展 JButton 类创建一个按钮等。
3. 设置组件属性:创建组件后,可以使用 Java 代码设置它们的属性,例如文本、颜色、大小、位置等。
这可以通过调用组件的相应方法来完成。
4. 添加事件监听器:为了使应用程序对用户的交互做出反应,需要为组件添加事件监听器。
例如,如果需要在按钮被点击时执行某个操作,可以为按钮添加一个ActionListener。
5. 组织组件层次结构:在 Swing 中,组件是按照层次结构组织的。
父组件可以包含子组件,子组件可以包含孙子组件等。
需要确保组件的层次结构正确,以便正确显示和处理事件。
6. 创建窗口:最后,需要创建一个包含所有组件的窗口。
这可以通过创建一个 JFrame 对象并将其设置为可见来完成。
7. 运行应用程序:完成应用程序的编写后,可以使用 Java 编译器将其编译为可执行文件,并在 Java 虚拟机上运行。
这是使用 Java Swing 编写应用程序的基本步骤。
需要注意的是,Swing 是一个庞大而复杂的 API,需要花费时间和精力来学习和掌握。
Java的形化界面开发选择合适的框架与工具

Java的形化界面开发选择合适的框架与工具Java的图形界面开发选择合适的框架与工具Java是一种跨平台的编程语言,广泛应用于软件开发领域。
在图形界面开发方面,Java提供了多个框架与工具,开发者可以根据自身需求选择合适的组件和工具来进行开发。
本文将介绍几个常用的Java图形界面开发框架与工具,并分析它们的优势和适用范围。
一、Swing框架Swing是Java平台提供的主要图形界面开发框架之一。
它基于Java的AWT(Abstract Window Toolkit)框架,提供了丰富的GUI组件和强大的事件处理机制。
Swing具有良好的跨平台性能和灵活的可定制性,适用于开发各种类型的桌面应用程序。
Swing框架提供了一系列面向对象的GUI组件,如按钮、标签、文本框、表格等,开发者可以通过组合这些组件来构建复杂的用户界面。
此外,Swing还支持图形渲染、国际化和可访问性等功能,使得应用程序更加美观、易用和易于维护。
二、JavaFX框架JavaFX是Java平台的另一个重要图形界面开发框架。
它是在Java SE 8及其之后版本中引入的,作为Swing的继任者。
JavaFX框架提供了现代化的UI组件和丰富的动画效果,支持CSS样式表和FXML布局文件,极大地简化了界面设计和开发流程。
JavaFX具有良好的性能和优秀的渲染效果,在图形处理、媒体播放和界面布局等方面有着卓越的表现。
它的线程模型也更加灵活,能够实现响应式的用户界面设计。
三、AWT框架AWT是Java最早引入的图形界面开发框架。
它是使用本地窗口系统提供的原生组件,因此在外观和行为上与操作系统保持一致。
AWT 提供了一系列基本的GUI组件,如按钮、标签、文本框等,可以通过AWT的布局管理器来进行界面排版。
尽管AWT能够提供与操作系统一致的外观,但它的定制性和可扩展性相对较差。
另外,AWT的组件在跨平台上的兼容性也有一定的问题。
因此,在现代的Java应用程序开发中,AWT的使用相对较少,主要用于一些特定场景或需要与底层系统交互的应用。
Java17第十四章2-界面设计swing

JPopupMenu:弹出式菜单组件
安卓越科技(北京)有限公司
18
import java.awt.Color; import javax.swing.*; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; public class PopupMenuTest { static JPopupMenu popup=null; public static void main(String[] args) { JFrame frame = new JFrame(); frame.setBounds(200,300,200, 300); frame.setTitle("我的第一个小板凳"); //设置不允许调整窗口的大小 frame.setResizable(false); frame.setBackground(Color.ORANGE); popup = new JPopupMenu(); popup.add("徐明华"); popup.add("张燕君"); popup.add("徐诗佳"); popup.add("王子昊"); popup.setName("右击菜单"); frame.add(popup);//在窗体上加右击菜单 frame.addMouseListener(new MouseAdapter() { public void mouseReleased(MouseEvent e) { if(e.getButton() == MouseEvent.BUTTON3){ popup.show(e.getComponent(), e.getX(), e.getY()); } } });//添加事件监听器 frame.setVisible(true);//显示窗体}}
Java图形用户界面设计

13
(3) 事件监听器(Listener) 事件处理机制中的核心部分,主要的功能大致可以分为 两部分:第一,监听组件,观察组件有没有发生某类事 件;第二,如果监听的组件发生了某类事件,则调用对 应的动作处理方法立刻处理这个事件。 在Java事件处理机制中,监听器处于主体地位。与事件 分类对应,监听器也相应的分成若干种类型,例如,鼠 标事件对应鼠标监听器,键盘事件对应键盘监听器,窗 口事件对应窗口监听器等。
25
5.3.2 AWT组件库常用组件举例 【问题1】 在窗口f中,有一个文本框tf,三个按钮btn_1、 btn_2、btn_3。当使用鼠标点击btn_1时,文本框显示 btn_1按钮被点击,当使用鼠标点击btn_2按钮时,文本框 显示btn_2按钮被点击,当使用鼠标点击btn_3按钮或者窗 口f的关闭按钮时,窗口关闭,程序退出。
(4) Choice Choice表示下拉选择框组件,选择框中的每一个选项称 为一个Item,Item的类型一般为String字符串。 (5) Label Label表示标签组件,主要作用在于创建提示性的文本。
23
(6) MenuBar、Menu和MenuItem MenuBar表示菜单条组件,该组件由Menu菜单构成,而 Menu菜单又可由Menu菜单和MenuItem菜单项构成。 (7) TextField TextField表示文本框组件,与文本域组件不同的是, 文本框中只能有一行文本。 (8) TextArea TextArea表示文本域组件,可以容纳多行文本。
30
(3) JRadioButton和ButtonGroup 在Swing中与Checkbox对应的是JCheckBox,实际使用时, 如果需要创建单选框组的话,经常使用的是 JRadioButton而非JCheckBox。如果将多个JRadioButton 组件放在一个ButtonGroup中时,这些JRadioButton组件 将不再具有复选功能,而是只具有单选功能,也即变成 单选框。 (4) JComboBox JcomboBox对应于AWT中的Choice,表示下拉选择框组件, 选择框中的每一个选项称为一个Item,Item的类型一般 为String字符串,也可以是指定的泛型类型。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
简述Java图形用户界面设计(Swing)Swing是一个用于开发Java应用程序用户界面的开发工具包。
它以抽象窗口工具包(AWT)为基础使跨平台应用程序可以使用任何可插拔的外观风格。
Swing开发人员只用很少的代码就可以利用Swing丰富、灵活的功能和模块化组件来创建优雅的用户界面。
作为一个Java 程序员,从论坛上感受到使用Java 开发程序的人越来多,心中不免欣慰。
但是,同样是从论坛中,看到多数人提到Java 就以为是网络开发——不是这样的,Java 也可以开发应用程序,而且可以开发出漂亮的图形用户界面的应用程序,也就是Windows/XWindow 应用程序。
因此,我写下这篇文章,希望能带你进入Java 图形用户界面设计之门。
下面,让我们开始……说明:所有代码均在Windows XP + Eclipse 环境下编写和测试,示例图片均在Windows XP 下捕捉。
目录一. AWT 和Swing二. 框架、监听器和事件三. 按钮、切换按钮、复选按钮和单选按钮四. 文本输入框、密码输入框五. 窗格、滚动窗格和布局管理六. 后记——什么是SWT (2006年补充)一. AWT 和SwingAWT 和Swing 是Java 设计GUI 用户界面的基础。
与AWT 的重量级组件不同,Swing 中大部分是轻量级组件。
正是这个原因,Swing 几乎无所不能,不但有各式各样先进的组件,而且更为美观易用。
所以一开始使用AWT 的程序员很快就转向使用Swing 了。
那为什么AWT 组件没有消亡呢?因为Swing 是架构在AWT 之上的,没有AWT 就没有Swing。
所以程序员可以根据自己的习惯选择使用AWT 或者是Swing。
但是,最好不要二者混用——除开显示风格不同不说,还很可能造成层次(Z-Order) 错乱,比如下例:1/*2 * AwtSwing.java3 * @author Fancy4 */56import java.awt.BorderLayout;7import java.awt.Button;89import javax.swing.JButton;10import javax.swing.JDesktopPane;11import javax.swing.JFrame;12import javax.swing.JInternalFrame;13import javax.swing.JPanel;1415public final class AwtSwing {1617public static void main(String[] args) {18 AwtSwing as = new AwtSwing();19 as.show();20 }2122 JFrame frame = new JFrame("Test AWT and SWING");2324 JDesktopPane jdp = new JDesktopPane();2526 JInternalFrame jif1 = new JInternalFrame("controls");2728 JInternalFrame jif2 = new JInternalFrame("cover");2930public AwtSwing() {31 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);32 frame.getContentPane().add(jdp);3334 jif1.setContentPane(new JPanel());35 jif2.setContentPane(new JPanel());3637 jif1.getContentPane().setLayout(new BorderLayout());38 jif1.getContentPane().add(new Button("AWT Button"), BorderLayout.WEST);39 jif1.getContentPane().add(new JButton("Swing Button"),40 BorderLayout.EAST);4142 jif1.setSize(200, 100);43 jif2.setSize(200, 100);4445 jdp.add(jif1);46 jdp.add(jif2);4748 frame.setSize(240, 140);49 }5051public void show() {52 frame.setVisible(true);53 jif1.setVisible(true);54 jif2.setVisible(true);55 }5657}运行这个程序,并用鼠标拖动那个名为“cover”的子窗口,我们会发现一个非常有趣的现象,如图:显然cover 子窗口是在controls 子窗口之上的,但是它只罩盖住了Swing Button,没有罩盖住AWT Button。
再看一会儿,你是不是有这样一种感觉:Swing Button 是“画”上去的,而AWT Button 则是“贴”上去的。
这就是二者混用造成层次错乱的一个例子。
Swing 组件有美观、易用、组件量大等特点,也有缺点——使用Swing 组件的程序通常会比使用AWT 组件的程序运行更慢。
但是大家都还是更喜欢用Swing 组件,原因何在?因为随着计算机硬件的升级,一点点速度已经不是问题。
相反的,用户更需要美观的用户界面,开发人员则更需要易用的开发组件。
二. 框架、监听器和事件框架(Frame, JFrame) 是Java 图形用户界面的基础,它就是我们通常所说的窗口,是Windows/XWindow 应用程序的典型特征。
说到Windows/XWindow,大家很容易联想到“事件(Event) 驱动”。
Java 的图形用户界面正是事件驱动的,并且由各种各样的监听器(Listener) 负责捕捉各种事件。
如果我们需要对某一个组件的某种事件进行捕捉和处理时,就需要为其添加监听器。
比如,我们要在一个窗口(JFrame) 激活时改变它的标题,我们就需要为这个窗口(JFrame 对象) 添加一个可以监听到“激活窗口”这一事件的监听器——WindowListener。
怎么添加监听器呢?这通常由组件类提供的一个addXxxxxListener 的方法来完成。
比如JFrame 就提供有addWindowListener 方法添加窗口监听器(WindowListener)。
一个监听器常常不只监听一个事件,而是可以监听相关的多个事件。
比如WindowListener 除了监听窗口激活事件(windowActivate) 之外,还可以监听窗口关闭事件(windowClosing) 等。
那么这些事件怎么区分呢?就靠重载监听器类(Class) 的多个方法(Method) 了。
监听器监听到某个事件后,会自动调用相关的方法。
因此我们只要重载这个方法,就可以处理相应的事件了。
不妨先看一个例子:58/**59 * @(#) TestFrame.java60 * @author James61 */6263import javax.swing.*;64import java.awt.event.*;6566public class TestFrame extends JFrame {6768private int counter = 0;6970public TestFrame() {71 /* 使用匿名类添加一个窗口监听器 */72 addWindowListener(new WindowAdapter() {73public void windowClosing(WindowEvent e) {74 System.out.println(75 "Exit when Closed event");76 //退出应用程序77 System.exit(0);78 }7980public void windowActivated(WindowEvent e) {81 // 改变窗口标题82 setTitle("Test Frame " + counter++);83 }84 });8586 // 设置窗口为固定大小87 setResizable(false);88 setSize(200, 150);89 }9091public static void main(String[] args) {92 TestFrame tf = new TestFrame();93 tf.show();94 }9596}这个例子中,我们设计了一个窗口类(public class TestFrame extends JFrame { ... }),并且为这个窗口添加了一个窗口监听器(addWindowListener(new WindowAdapter() ...)。
而我们添加的这个窗口监听器主要监听了两个事件:窗口关闭(public void windowClosing(WindowEvent e) ...) 和窗口激活(public void windowActivated(WindowEvent e) ...)。
在窗口关闭事件中我们退出了整个应用程序(System.exit(0);),而在窗口激活事件中,我们改变了窗口的标题(setTitle("Test Frame " + counter++);)。
最后,我们在main 方法中显示了这窗口类的一个实例,运行得到下图所示的结果:这个程序的运行结果就是一个什么东西都没有加的框架,也就是一个空窗口。
那么,你知道显示一个窗口最主要的几句代码吗?不知道没关系,我来告诉你,显示一个窗口只需要做三件事:生成实例(对象)→设置大小→显示,相应的,就是下面的三句代码:97JFrame frame = new JFrame("Frame's Title");98frame.setSize(400, 300);99frame.setVisible(true);也许你会说:第一句的意思我清楚,第三句的意思我也明白,为什么一定要第二句呢?其实想想也就明白了,叫你画一个没法有大小的矩形你能画出来吗?不能。
同样,没有大小的窗口,怎么显示?所以我们需要用setSize(int width, int height) 方法为其设置大小。