11第十一章 Java的GUI编程初步实验代码
java gui实训课程设计
java gui实训课程设计Java GUI实训课程设计引言:随着计算机技术的不断发展,图形用户界面(Graphical User Interface,GUI)已经成为了现代软件开发的重要组成部分之一。
Java作为一种广泛应用于软件开发领域的编程语言,也提供了强大的GUI库,使得开发者能够轻松地创建交互性强、界面美观的应用程序。
因此,Java GUI实训课程设计对于学生们来说具有重要的意义。
一、课程设计背景与目标Java GUI实训课程设计旨在通过实践操作,让学生们掌握Java GUI 开发的基本理论与应用技巧。
通过该课程的学习,学生们将能够独立完成一个基于Java GUI的应用程序的设计与开发,提高他们的软件开发能力和创新思维。
二、课程设计内容1. Java GUI基础知识在课程的开始阶段,学生们将系统地学习Java GUI的基本概念和原理,包括Swing组件、布局管理器、事件监听器等内容。
通过理论学习和实践操作,学生们将掌握Java GUI的基本框架和开发流程。
2. 实践项目选题在学习了Java GUI的基础知识之后,学生们将根据自己的兴趣和实际需求,选择一个适合的实践项目进行设计与开发。
项目的选题可以涉及各个领域,例如学生信息管理系统、音乐播放器、游戏界面等等。
通过实践项目的设计与开发,学生们能够将所学知识应用于实际,提升他们的综合能力。
3. 项目需求分析与设计在开始实际编码之前,学生们需要进行项目需求分析与设计。
他们需要与团队成员合作,明确项目的功能需求和界面设计,并编写相应的需求文档和设计文档。
这一阶段的工作能够帮助学生们更好地理解项目的需求,为后续的编码工作奠定基础。
4. 项目编码与测试在完成项目的需求分析与设计之后,学生们将进入项目的编码与测试阶段。
他们需要根据需求文档和设计文档编写Java代码,并进行相应的单元测试和集成测试。
通过这一阶段的工作,学生们将加深对Java GUI的理解,并掌握常用的调试技巧。
Java的GUI编程
Java的GUI编程一、介绍Java是一种广泛使用的编程语言,具有跨平台性和面向对象的特点。
GUI (Graphical User Interface)编程是指通过图形化界面与用户进行交互的编程方式。
Java提供了丰富的GUI编程工具和库,使开发人员能够轻松地创建各种图形化界面应用程序。
二、SwingSwing是Java中最常用的GUI编程框架之一。
它提供了一套丰富的组件,如按钮、文本框、标签等,以及容器组件,如面板、框架等。
开发人员可以使用Swing 来构建各种复杂的图形化界面应用程序。
在Swing中,每个组件都有自己的属性和方法,可以通过设置和调用这些属性和方法来实现不同的功能。
例如,可以通过设置按钮的文本、颜色和事件处理程序来创建一个可点击的按钮。
Swing还支持布局管理器,用于自动调整组件的位置和大小。
常用的布局管理器有FlowLayout、BorderLayout和GridLayout等。
开发人员可以根据需求选择合适的布局管理器来实现自己想要的界面布局。
三、JavaFXJavaFX是Java中另一个重要的GUI编程框架。
与Swing相比,JavaFX提供了更加现代化和强大的功能。
它使用了一种基于XML的标记语言FXML来描述界面,使得界面设计和开发更加灵活和易于维护。
JavaFX提供了丰富的内置组件,并且支持自定义组件的开发。
它还支持动画效果、图形渲染和多媒体处理等高级功能。
开发人员可以利用这些功能创建出更加精美和交互性强的界面应用程序。
JavaFX还提供了场景图(Scene Graph)的概念,用于管理界面上的所有组件和布局。
开发人员可以通过添加和删除组件、设置组件的属性和监听用户事件来实现界面的交互和动态更新。
四、AWTAWT(Abstract Window Toolkit)是Java最早的GUI编程框架,它提供了一套与操作系统窗口系统交互的接口。
AWT的组件和布局管理器是基于操作系统的原生界面,因此在不同的操作系统上可能会有不同的外观和行为。
使用Java开发形用户界面(GUI)应用程序
使用Java开发形用户界面(GUI)应用程序Java是一种跨平台的编程语言,广泛应用于开发各种类型的应用程序,包括形用户界面(GUI)应用程序。
本文将介绍使用Java开发GUI应用程序的基本步骤和技巧。
一、GUI应用程序介绍GUI应用程序是指具有图形界面的应用程序,用户可以通过鼠标、键盘等输入设备与程序进行交互。
相比于命令行应用程序,GUI应用程序通常更加直观、易于使用。
Java提供了丰富的GUI编程库,可以方便地创建各种交互式应用程序。
二、Java GUI编程库Java提供了两个主要的GUI编程库:AWT(Abstract Window Toolkit)和Swing。
AWT是Java最早提供的GUI编程库,它使用操作系统的原生组件绘制用户界面;而Swing是在AWT基础上开发的,它使用Java绘制用户界面,实现了更好的跨平台性能。
三、创建GUI应用程序的基本步骤1.导入必要的类库:在开发GUI应用程序之前,需要导入相应的类库,例如import javax.swing.*。
2.创建窗口:使用JFrame类创建窗口,并设置窗口的标题、大小和关闭方式等。
3.创建组件:使用各种Swing组件,如按钮、标签、文本框等,来构建用户界面。
4.设置布局管理器:使用布局管理器来控制组件的排版和布局,例如FlowLayout、BorderLayout等。
5.添加事件处理:为各个组件添加事件监听器,使其能够响应用户的交互操作,例如按钮的点击事件、文本框的文本改变事件等。
6.处理用户输入:在事件处理中,根据用户输入的不同,可以进行相应的逻辑处理,例如验证用户输入的合法性、执行特定的操作等。
7.显示窗口:将窗口组件添加到窗口中,并设置窗口可见,使其能够显示出来。
四、示例代码以下是一个使用Java Swing库创建简单GUI应用程序的示例代码:```import javax.swing.*;public class MyApplication extends JFrame {public MyApplication() {// 设置窗口标题setTitle("My Application");// 设置窗口大小setSize(400, 300);// 设置窗口关闭方式setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 创建标签组件JLabel label = new JLabel("Hello, World!");// 将标签组件添加到窗口中add(label);// 设置布局管理器setLayout(new FlowLayout());// 显示窗口setVisible(true);}public static void main(String[] args) {// 在事件分派线程中创建窗口对象SwingUtilities.invokeLater(new Runnable() {public void run() {new MyApplication();}});}}```以上代码创建了一个窗口,窗口标题为"My Application",大小为400x300像素。
11第十一章GUI编程
Java编程基础——GUI编程12第十一章GUI 编程目标:本章旨在向学员介绍本章旨在向学员介绍::什么是GUI GUI,,Java AWT 包,什么是容器的概念及相关类的概念及相关类。
AWT 包中组件的继承关系的继承关系。
布局管理器布局管理器。
AWT 中常用组件的使用中常用组件的使用。
AWT 中的事件处理模型件处理模型。
简介Swing API 。
如何给Java 应用程序打包应用程序打包。
时间时间::学时教学方法教学方法::3本章要点•GUI 概述•AWT 概述•AWT 中的组件和容器•布局管理器•事件处理模型•事件分类•事件适配器•匿名内部类•Applet •Swing•Jar 为应用程序打包4GUI 概述•GUI (Graphical User Interface )图形用户界面,包括窗口、菜单栏、工具条、按钮等组件和其他各种屏幕元素•GUI 组件按其作用可分为基本组件基本组件((简称组件简称组件))和容器两大类:–GUI 组件,也称构件,其上不能容纳其他组件,如按钮、文本框等图形界面元素–容器是一种特殊的组件,用来容纳其他组件,如窗口、对话框等•Java 提供了两个GUI 的开发包:java.awt 和javax.swing –java.awt 包中的抽象类Component 是所有Java GUI 组件的共同父类,它规定了所有GUI 组件的基本特性–swing是AWT的扩展,它提供了更强大和更灵活的组件集合,如树,表格等等5AWT 概述•AWT (Abstract Window Tools)是java 中处理图形最基本的方式,可以用来创建Java 的Applet 及窗口程序。
•由于AWT 中的每个组件都需要消耗系统资源,Sun 对AWT 进行改进,Swing 由此出现。
•Swing 的组件均是由AWT 中的Container 类为基础开发设计的,故需学习AWT 技术。
6•一个Java 的图形用户界面的最基本组成部分就是组件(Component ),组件是一个可以以图形化的方式显示在屏幕上并能与用户进行交互的对象。
java_11GUI编程
窗体Frame
public void dispose()
– //可以撤销当前窗口,释放窗口所使用的资源
Frame是Window的子类,凡是Window子类的对 象都引发WindowEvent事件。 当一个Frame窗口被激活、撤销激活、打开、关 闭、最小化或撤销最小化,就会引发窗口事件, 获得监视器的方法如下: public void addWindowListener(WindowListener)
BorderLayout(边框布局)
构造函数
BorderLayout();
//各组件纵、横间距为0 BorderLayout(int hgap, int vgap); //hgap横间距,vgap纵间距,象素为单位
add (组件,位置);
位置可取值:
BorderLayout.NORTH[WEST,CENTER,EAST,SOUTH]
容器(Container )
AWT中的容器
Window Frame(重点掌握) Dialog Panel Applet
Frame 窗体
介绍:Frame是一个带有边框、标题栏、菜单的图形 容器。 构造方法:
Frame() 创建一个空白框架 Frame(String s) 创建一个使用 s 做标题的框架。 Frame类常用的方法: public void setIconImage(Image image):设置窗体显示的图 标 public void setMenuBar(MenuBar menubar):加载窗体使 用的菜单对象 public void setLayout(LayoutManager manager):设置窗体 使用的布局管理器
java的GUI编程初步
南昌大学实验报告学生姓名:学号:专业班级:实验类型:□验证□综合□设计□创新实验日期:2012年5月17日实验成绩:第11章java的GUI 编程初步实验内容:(1)按钮有序排列(2)密码验证问题(3)名片录入管理界面设计(4)文字字体设计窗体实验1、按钮有序排列实验目的:(1) 了解GUI 的概念;(2) 了解java.awt 包和javax.swing 包, 以及比较它们具有的同性质的组件的异同;(3) 掌握和运用Java 的基本GUI 组件, 了解它们的特点。
实验任务:本实验要求定义按钮若干让它们按照从左向右的顺序依次排列, 显示5个带图标的按钮。
实验步骤:在Eclipse 中新建一个Chapter11项目, 按照下列要求完成实验。
练习: 调试和运行程序ButtonCounter.java;要求: 在当前项目Chapter11中, 新建一个文件ButtonCounter.java, 将程序清单11-1 中的程序输入并保存。
该程序可以定义按钮若干使它们按照从左向右的顺序依次排列, 显示5个带图标的按钮, 运行结果如图1所示。
阅读和分析程序ButtonCounter.java, 调试编译并运行该程序。
图1程序清单11-1 ButtonCounter.java//ButtonCounter.javaimport javax.swing.*;import java.awt.*;public class ButtonCounter extends JFrame {public ButtonCounter() {super("显示按钮窗口");ImageIcon Icon = new ImageIcon("image/image.gif");JButton jbt1 = new JButton("按钮",Icon);JButton jbt2 = new JButton("按钮",Icon);JButton jbt3 = new JButton("按钮",Icon);JButton jbt4 = new JButton("按钮",Icon);JButton jbt5 = new JButton("按钮",Icon);JPanel p1 = new JPanel();p1.add(jbt1);JPanel p2 = new JPanel();p2.add(jbt2);JPanel p3 = new JPanel();p2.add(jbt3);JPanel p4=new JPanel();p4.add(jbt4);JPanel p5=new JPanel();p5.add(jbt5);getContentPane().setLayout(new FlowLayout());getContentPane().add(p1);getContentPane().add(p2);getContentPane().add(p3);getContentPane().add(p4);getContentPane().add(p5);}public static void main(String[] args) {// Create a frame and set its propertiesJFrame frame = new ButtonCounter();frame.pack();frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setV isible(true);}}运行结果:思考(1) 在程序的main() 方法中有语句Frame.pack(), 该方法的作用是什么?该方法的作用是自动确定Frame的大小。
Java中的GUI编程
集成Web技术:Java GUI编程将与Web技术更加紧密地集成,使得开发者能够更加方便地 开发出功能丰富、界面美观的Web应用程序。
增强安全性:Java GUI编程将更加注重安全性,提供更多的安全特性和工具,帮助开发者 构建更加安全的应用程序。
AWT组件使用示例
组件类型:按钮、标
签、文本框、选择框 等
组件属性:颜色、字 体、大小、位置等
组件事件:点击事件
、键盘事件、鼠标事 件等
组件布局:流式布局 、网格布局、边界布 局等
JavaFX组件库
JavaFX组件库简介
标题
JavaFX组件库是Java中用于构建GUI界面的工具包
标题
提供了丰富的UI控件,如按钮、文本框、列表等
BorderPane:分为 五个区域,可以设置 子节点的位置和比例 ,适合布局复杂的界
面
GridPane:按照网格 布局,可以设置行、列 、跨度等属性,适合布 局规则、整齐的界面
06
HBox和VBox:分别 按照水平或垂直方向 排列子节点,可以设 置对齐方式、间距等
07
JavaFX布局管理器的 使用方法:通过设置组 件的布局管理器属性, 可以轻松实现界面布局
。
JavaFX事件处理机制
事件源: JavaFX组件库 中的UI组件
事件类型:包 括鼠标事件、 键盘事件、触 摸事件等
事件处理:通 过注册监听器 来实现事件处 理
监听器类型: 包括事件监听 器、动作监听 器、选择监听 器等
事件传播:事 件从源组件传 播到父组件, 直到到达根节 点
GUI应用开发JAVA实验报告
GUI应用开发JAVA实验报告一、实验目的本实验旨在提高学生对于GUI应用开发的理论和实践能力。
通过本实验,学生将掌握使用JAVA语言开发GUI应用程序的方法和技巧,并能够应用所学的知识,完成一个简单的GUI应用程序的开发。
二、实验内容本实验要求学生使用JAVA语言开发一个简单的GUI应用程序,要求程序能够实现以下功能:1.提供一个用户界面,包含输入框和按钮。
用户可以在输入框中输入一段文字,然后点击按钮后,程序将会把输入框中的文字显示在屏幕上。
2.提供一个菜单栏,包含一个文件菜单和一个帮助菜单。
文件菜单中包含一个打开选项和一个退出选项。
帮助菜单中包含一个关于选项。
用户可以通过菜单栏选择文件菜单中的选项,实现打开文件和退出程序的功能。
用户还可以选择帮助菜单中的关于选项,显示程序的相关信息。
三、实验步骤1.创建一个新的JAVA项目,命名为“GUI应用开发”。
2.在项目中创建一个新的JAVA类,命名为“GUI应用”。
3. 在“GUI应用”类中使用Swing包中的组件创建用户界面,并添加输入框和按钮。
4. 在按钮的ActionListener中实现按钮的点击事件,获取输入框中的文字并显示在屏幕上。
5.在“GUI应用”类中创建一个菜单栏,并添加文件菜单和帮助菜单。
6.在文件菜单中添加打开选项和退出选项,并实现打开文件和退出程序的功能。
7.在帮助菜单中添加关于选项,并实现显示程序的相关信息的功能。
四、实验结果经过实验,我成功地开发了一个能够实现要求功能的GUI应用程序。
用户可以在输入框中输入文字,然后点击按钮,程序会将输入框中的文字显示在屏幕上。
同时,用户还可以通过菜单栏选择文件菜单中的选项,实现打开文件和退出程序的功能。
用户还可以选择帮助菜单中的关于选项,显示程序的相关信息。
五、实验总结通过本次实验,我深入了解了GUI应用开发的基本原理和常用的技巧。
我学会了使用JAVA语言开发GUI应用程序的方法,并能够应用所学的知识,完成一个简单的GUI应用程序的开发。
Java中的GUI编程入门指南
Java中的GUI编程入门指南Java作为一种功能强大的编程语言,提供了丰富的图形用户界面(Graphical User Interface,简称GUI)编程工具和库,使得开发人员能够轻松地创建具有吸引力和交互性的界面。
本文将为您介绍Java中的GUI编程,帮助您入门并了解GUI编程的基本原理和常用组件。
一、GUI编程基础在开始学习Java中的GUI编程之前,首先需要了解一些基础知识。
GUI编程是通过使用图形库和工具来创建用户界面,其中包括各种不同的用户界面元素,如窗口、按钮、文本框等。
Java提供了独立于操作系统的跨平台GUI编程工具,因此您的应用程序可以在不同的操作系统上运行,并保持一致的外观和功能。
二、Swing组件库Java中最常用的GUI编程工具是Swing组件库,它提供了各种各样的组件,用于创建界面的各个部分。
Swing组件库具有丰富的功能和可定制性,可以满足不同应用程序的需求。
以下是一些常用的Swing组件:1. JFrame:JFrame是Java中的顶层容器,用于创建和管理窗口。
您可以在窗口中添加其他组件,并定义窗口的大小、位置和操作。
2. JPanel:JPanel是用于布局和组织其他组件的容器。
您可以将多个JPanel组合在一起形成复杂的界面。
3. JButton:JButton是一个用于触发特定操作的按钮。
您可以为按钮添加事件监听器,以便在用户点击按钮时执行一些操作。
4. JLabel:JLabel用于显示文本或图像。
您可以使用JLabel来显示应用程序的标题、标签等。
5. JTextField:JTextField是一个文本输入框,用户可以在其中输入和编辑文本。
6. JTable:JTable用于显示和编辑表格数据。
您可以通过设置不同的表格模型和渲染器来自定义表格的外观和功能。
三、GUI编程示例为了帮助您更好地理解Java中的GUI编程,以下是一个简单的示例,演示了如何创建一个基本的用户界面。
语言程序设计资料:Java的GUI编程
Panel
Window
TextArea
TextField
Applet
Frame
Dialog
JAVA基础培训—Java的GUI编程
Swing简介和javax.swing包
• Swing是在AWT基础上发展而来的轻量级组件,与AW T相比不但改进了用户界面,而且所需的系统资源更少 ;
• Swing是纯Java组件,使所有的应用程序在不同的平 台上运行时具有本机外观和相同的行为。
JButton
JTexArea
JAVA基础培训—Java的GUI编程
java.awt包
• java.awt包是Java内置的包,属于Java基本类 库(JFC)的一部分,其中包括以下内容:
• 便于用户输入的一组丰富的界面组件; • 将组件放置在适当位置的几中布局管理器; • 事件处理模型; • 图形和图像工具等等。
❖ 注意:容器中可以容纳组件,也可以容纳比它“容量级别 小”的容器。
AWT容器
JAVA基础培训—Java的GUI编程
❖Window的子与类Panel的区别: 有两❖种FWrian类mdeo型:w最是的常能容用够器的独:窗立体存Wi放nd的o容w和器P;anel
❖DPiaanleol不g:能对单话独框存在,必须放入 Wind ow或其子类中
JAVA基础培训—Java的GUI编程
javax.swing.JFrame
• JFrame组件用于在Swing程序中创建窗体; • 以下是JFrame常见的构造方法:
构造方法
说明
JFrame()
创建一个框架,该框架初始为不可见
JFrame(String title)
创建一个框架,参数title为窗体标题, 该框架初始为不可见
java gui实训课程设计
java gui实训课程设计Java GUI实训课程设计Java GUI(图形用户界面)是Java编程语言提供的一个强大的工具,用于创建交互式的用户界面。
在Java GUI实训课程设计中,学生将学习如何使用Java编写GUI应用程序,通过图形界面与用户进行交互。
在Java GUI实训课程设计中,学生将学习如何使用Java的图形库(如Swing或JavaFX)来创建窗口、按钮、文本框、标签等GUI 组件,并对这些组件进行布局和事件处理。
通过实践,学生将掌握GUI编程的基本概念和技巧,如界面设计、事件驱动编程、用户输入验证等。
在Java GUI实训课程设计中,学生通常会完成一个小型的GUI应用程序,例如一个简单的计算器或一个学生信息管理系统。
在这个过程中,学生需要进行需求分析、界面设计、编码实现和测试调试等多个阶段的工作。
他们需要根据用户需求设计界面,选择合适的组件并进行布局,编写事件处理代码以响应用户操作,并确保程序的稳定性和可靠性。
在Java GUI实训课程设计中,学生需要学习如何使用Java提供的GUI组件库来创建用户界面。
他们可以使用布局管理器来控制组件的位置和大小,使用事件监听器来处理用户的操作,还可以使用绘图工具来实现自定义的界面效果。
通过这些工具和技术,学生可以创建出美观、易用的GUI应用程序。
在Java GUI实训课程设计中,学生还需要学习如何进行调试和错误处理。
他们需要学会使用调试工具来查找和修复程序中的错误,以确保程序的正确运行。
同时,他们还需要学会处理用户输入的异常情况,例如输入非法字符或超出范围的数据等,以提高程序的健壮性和用户体验。
在Java GUI实训课程设计中,学生将面临一些挑战和难点。
例如,他们需要学会合理地设计界面,使之既美观又易用;他们还需要学会处理不同类型的事件,如按钮点击、鼠标移动等;他们还需要学会使用多线程来处理复杂的任务,以保持程序的响应性。
通过Java GUI实训课程设计,学生可以提高自己的编程能力和软件开发技巧。
如何使用Java编写简单的GUI应用程序
如何使用Java编写简单的GUI应用程序1. 引言Java是一种流行的编程语言,广泛用于开发各种类型的应用程序。
GUI(图形用户界面)应用程序是其中一种常见的应用类型。
本文将介绍如何使用Java编写简单的GUI应用程序。
2. Java的GUI库Java提供了多种GUI库来开发图形界面应用程序,其中最常用的是Swing和JavaFX。
本文将着重介绍Swing库,因为它是Java标准库的一部分,并且易于学习和使用。
3. 准备工作在开始编写GUI应用之前,需要确保已经安装了Java开发环境(JDK)并配置好相应的环境变量。
可以通过在命令行中输入`java -version`来检查JDK的安装情况。
4. 创建GUI窗体首先,在Java中创建一个GUI窗体需要借助于Swing库中的JFrame类。
可以通过以下代码创建一个简单的GUI窗体: ```javaimport javax.swing.JFrame;public class MyGUIApp extends JFrame {public MyGUIApp() {// 设置窗体标题setTitle("My GUI App");// 设置窗体大小setSize(400, 300);// 设置默认关闭操作setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); }public static void main(String[] args) {// 创建GUI窗体实例并显示MyGUIApp app = new MyGUIApp();app.setVisible(true);}}```通过继承JFrame类并实现自定义的构造方法,可以创建一个简单的GUI窗体。
在main方法中创建实例并通过setVisible方法显示出来。
5. 添加组件GUI应用程序不仅仅只有一个窗体,还需要添加各种组件(如按钮、文本框、标签等)来交互和展示数据。
JAVA GUI实验报告
jfrm.setLayout(null); jfrm.setSize(800, 250); jfrm.setTitle("简易计算器");
jtf1.setBounds(100,20,55,25); jtf1.setEditable(false); jfrm.add(jtf1);
将结果显示在第三个文本框中
} } } }
五、测试/调试及实验结果分析
六、实验结论与体会
学会如何使用 GUI 设计一个程序界面。
2015 年 6 月 17 日
难点在于如何能够把 JAVA 的 GUI 中的文本框处理成可输以及不可输入,同时,在创建下 拉菜单加减乘除进行赋值进行计算。觉得 GUI 很难!
second.setText(String.valueOf(secondnum1));
} else {
int i = jco.getSelectedIndex();// 得到当 前下拉列表框的值
String str1 = first.getText();// 得到第一 个文本框的值
String str2 = second.getText();// 得到第 二个文本框的值
static JTextField jtf1 = new JTextField("第一 个数", 5);
static JTextField jtf2 = new JTextField("第二 个数", 5);
static JTextField first = new JTextField("", 20);
如何使用Java编写GUI界面程序
如何使用Java编写GUI界面程序第一章:介绍Java GUI编程Java GUI(图形用户界面)编程是使用Java语言创建可视化应用程序的方法。
它可以通过使用Java提供的GUI库或框架来实现。
Java GUI编程提供了丰富的工具和组件,使得开发人员可以轻松创建具有丰富功能和交互性的用户界面。
第二章:设置开发环境在开始编写Java GUI程序之前,确保已经安装了Java Development Kit(JDK)和集成开发环境(IDE),如Eclipse或IntelliJ IDEA。
确保配置正确的Java运行时环境(JRE)。
第三章:了解Swing框架Java Swing是Java中最常用的GUI框架之一。
它提供了一系列强大的组件,如按钮、文本框、标签、列表和表格等,可以用于构建GUI界面。
熟悉Swing框架的API和使用方法是编写Java GUI程序的关键。
第四章:编写GUI界面使用Swing框架编写GUI界面时,通常需要创建一个顶层容器,如JFrame或JDialog。
然后,在容器中添加各种组件,如按钮、文本框和标签等。
可以使用布局管理器来控制组件的位置和大小。
还可以为组件添加事件处理程序以实现交互。
第五章:布局管理器布局管理器是用于控制组件在容器中的布局和排列的工具。
Java提供了几种布局管理器,如FlowLayout、BorderLayout和GridLayout等。
了解每种布局管理器的特点和用法,选择适合需求的布局管理器来创建用户界面。
第六章:事件处理Java GUI程序需要对用户的操作进行响应,并执行相应的操作。
可以使用事件处理机制来实现这一功能。
在Swing框架中,事件是通过添加监听器来处理的。
通过为组件添加适当的监听器,可以捕获和处理用户触发的事件。
第七章:图形和绘图Java GUI编程不仅限于简单的组件和布局,还可以通过绘图和图形操作来实现更复杂的效果。
Java提供了各种绘图相关的类和方法,如Graphics和Graphics2D等,可以在组件上绘制形状、图像和文本等。
Java GUI 简单控件实验报告
一、实验目的1.掌握JA V A swing包的使用。
2.掌握JA V A swing 包中类的运用。
3. 运用JA V A swing 包完成一个简单的控件内容读。
二、实验内容1.采用较为灵活和复杂的网格包布局的方式,实现简单登陆的功能。
三、设计与实现过程import java.awt.Container;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JOptionPane;import javax.swing.JPasswordField;import javax.swing.JTextField;public class dialog implements ActionListener{private JTextField textField;private JPasswordField passwordField;private JFrame frame;private JLabel[] label;private JButton[] button;private Container con;private String username, password;private String[] binfor = {"登录:","退出:"};public void login(){String[] linfor = {"账号:","密码:"};frame = new JFrame("登录");frame.setSize(300, 180);frame.setLocation(460,260);frame.setResizable(false);con = frame.getContentPane();con.setLayout(null);textField = new JTextField();passwordField = new JPasswordField();textField.setSize(200,470/15);textField.setLocation(770/15,5);con.add(textField);passwordField.setSize(200, 470/15);passwordField.setLocation(770/15, 5 + (670/15));con.add(passwordField);button = new JButton[2];label = new JLabel[2];for(int i = 0; i < 2; i++){label[i] = new JLabel(linfor[i]);label[i].setLocation(5, 3 + (i * 670/15));label[i].setSize(570/15, 670/15);con.add(label[i]);button[i] = new JButton(binfor[i]);button[i].setLocation(440/15 + (i * 2000/15),1600/15);button[i].setSize(1570/15,370/15);button[i].addActionListener(this);con.add(button[i]);}frame.setVisible(true);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}public void actionPerformed(ActionEvent event) {if(event.getSource() == button[0]){username = textField.getText();password = passwordField.getText();System.out.println("输入的账号为" + username + '\n' + "输入的密码为" + password);}}}}四、设计技巧及体会:本次试验主要是学习JA V A语言中GUI的内容,懂得了如何用JA V A语言编写窗口界面,学会了swing中JFrame,类。
第十一章 GUI编程
第十一章: GUI编程一.GUI -- Graphical User InterfaceAWT (抽象窗口工具集) AbstractWindow Toolkit为简单的applet程序设计AWT没有提供足够的桌面端的程序所需的特性它不适宜用来构建丰富的桌面图形界面SwingSwing是AWT的扩展和功能加强是构建java图形界面标准的APISWT (Standard Widget Toolkit)是一个开源的GUI编程框架SWT是IBM为它的Eclipse集成开发环境而开发的图形用户界面工具AWTAWT(Abstract Window Toolkit)包括了很多类和接口,用于Java Application 的GUI (Graphics User Interface 图形用户界面)编程。
GUI的各种元素(如:窗口,按钮,文本框等)由Java 类来实现。
AWT所涉及的类一般在java.awt包及其子包中。
Container和Component是AWT中的两个核心类。
Modal ModelessComponent & ContainerJava的图形用户界面的最基本组成部分是Component ,Component 类及其子类的对象用来描述以图形化的方式显示在屏幕上并能与用户进行交互的GUI元素,例如,一个按钮,一个标签等。
一般的Component对象不能独立地显示出来,必须将“放在”某一的Container对象中才可以显示出来。
Container是Component子类,Container子类对象可以“容纳”别的Component 对象。
Container对象可使用方法add(..)向其中添加其他Component对象。
Containter是Component的子类,因此Containter对象也可以被当作Component对象添加到其他Container对象中。
有两种常用的Containter:Window: 其对象表示自由停泊的顶级窗口Panel: 其对象可作为容纳其它Component对象,但不能独立存在,必须被添加到其它Containner中(如Window 或Applet)FrameFrame是Window的子类,由Frame或其子类创建的对象为一个窗体。
Java实用教程 第11章 AWT图形用户界面编程
fr.add(p1, BorderLayout.NORTH);
// 将p1添加到窗口NORTH区域(即顶部)
Panel p2 = new Panel();
// 创建面板p2
p2.setLayout(new GridLayout(4, 5, 3, 3));
// 设置p2使用GridLayout布局
String[] name = {"7", "8", "9", "÷", "√", "4", "5", "6", "×", "%"
AWT容器
Window和Frame
Window和Frame
Window有两个子类:Frame和Dialog。Frame带有标题,而且可以调整大小。Dialog可以被移动, 但是不能改变大小。Frame有一个构造方法Frame(String title),通过它可以创建一个以参数为标题 的Frame对象。Frame的add()方法向容器中加入其他组件。Frame被创建后是不可见的,必须通过 以下步骤使它成为可见。
setLocation()、setSize()或setBounds() 方法,为它们在容器中一一定位。
布局管理器
1.流式布局管理器
FlowLayout是把组件从左向右、从上向下,一个接一个地放到容器中,组件之间的默认间隔 (水平和垂直)为5个像素,对齐方式为居中。组件的大小由布局管理器根据组件的最佳尺寸 来决定。 FlowLayout的构造方法:
, "1", "2", "3", "-", "1/x", "0", ".", "C", "+", "±"};
GUI应用开发JAVA实验报告
Maria shares her Checking Account with her husband Tim.
Retrieving the customer Jane Smith with her savings account.
Withdraw 150.00: true
acct.balance=acct.balance- 150.0;
// Print out the final account balance
System.out.println("The final balance is " +acct.balance);
}
}
运行结果:The final balance is -3.0
doubleoverdraftNeeded= amount - balance;
if (overdraftAmount<overdraftNeeded) {
// No overdraft protection or not enough to cover the amount needed
result = false;
booleanresult = true;
if ( balance < amount ) {
// Not enough balance to cover the amount requested to withdraw
// Check if there is enough in the overdraft protection (if any)
ComputerPad.java该文件生成的类负责创建计算器的“主窗口”。该类含有main方法,整个程序的入口。
实验11 JAVA GUI设计
实训报告实验11 JA V A GUI设计(1)【实验目的】1.掌握JAVA语言GUI设计的概念。
2.掌握JAVA系统组件类的继承层次关系。
3.掌握JAVA语言系统常用组件类的功能和使用。
4.掌握JAVA GUI 事件处理机制的原理。
【预习内容】1.JAVA Component类的功能;2.JAVA 容器与非容器的概念;3.JAVA 顶级容器与普通容器的区别;4.JAVA对话框的分类及功能;【实验内容及步骤】上机验证题1.利用JoptionPane类编程实现如下的对话框界面:[程序清单]import javax.swing.JOptionPane;public class add{public static void main(String args[]){String firstNumber;String secondNumber;int number1;int number2;int sum;firstNumber=JOptionPane.showInputDialog("enter first integer");//显示提示消息secondNumber=JOptionPane.showInputDialog("enter second integer"); number1=Integer.parseInt(firstNumber);//属于输入诓礷firstNumber的变量 number2=Integer.parseInt(secondNumber);sum=number1+number2;JOptionPane.showMessageDialog(null,"the sumis"+sum,"result",JOptionPane.PLAIN_MESSAGE);System.exit(0);//注意showMessageDialog与showInputDialog的区别}}[程序运行过程]2. 编程实现如下的系统登录界面:【示例】[程序清单]import java.awt.*;import java.awt.event.*;public class Login extends Frame implements ActionListener {Label username=new Label("Username");//使用文本创建一个用户名标签TextField t1=new TextField();//创建一个文本框对象Label password=new Label("Password");//创建一个密码标签TextField t2=new TextField();Button b1=new Button("login");//创建登陆按钮Button b2=new Button("cancel");//创建取消按钮public Login (){this.setTitle("Login");//设置窗口标题this.setLayout(null);//设置窗口布局管理器username.setBounds(50,40,60,20);//设置姓名标签的初始位置this.add(username);// 将姓名标签组件添加到容器t1.setBounds(120,40,80,20);// 设置文本框的初始位置this.add(t1);// 将文本框组件添加到容器password.setBounds(50,100,60,20);//密码标签的初始位置this.add(password);//将密码标签组件添加到容器t2.setBounds(120,100,80,20);//设置密码标签的初始位置this.add(t2);//将密码标签组件添加到容器b1.setBounds(50,150,60,20);//设置登陆按钮的初始位置this.add(b1);//将登陆按钮组件添加到容器b2.setBounds(120,150,60,20);//设置取消按钮的初始位置this.add(b2);// 将取消按钮组件添加到容器b1.addActionListener(this);//给登陆按钮添加监听器b2.addActionListener(this);// 给取消按钮添加监听器this.setVisible(true);//设置窗口的可见性this.setSize(300,200);//设置窗口的大小addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e) {System.exit(0);}});//通过内部类重写关闭窗体的方法}public void actionPerformed(ActionEvent e){if (e.getSource()==b1)//处理登陆事件{String username=t1.getText();String password=t2.getText();if(username.equals("08050214")&&password.equals("123456")) {new Login();}}}public static void main(String args[])//主函数{new Login ();}}[程序运行过程]3. 编程实现如下的计算器界面:[程序清单]import java.awt.BorderLayout;import java.awt.GridLayout;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.JTextField;public class Calculator{public static void main(String args[]){CalculatorFrame calculatorFrame=new CalculatorFrame ( );calculatorFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);calculatorFrame.setSize(200,200);calculatorFrame.setVisible(true);}}class CalculatorFrame extends JFrame{p rivate JButton keys[];p rivate JPanel keyPadJPanel;p rivate JTextField lcdJTextField;p ublic CalculatorFrame(){setTitle("Calculator");lcdJTextField =new JTextField(20);lcdJTextField.setEditable(true);keys =new JButton[16];for(int i=0;i<=9;i++)keys[i]=new JButton(String.valueOf(i));keys[10]=new JButton("/");keys[11]=new JButton("*");keys[12]=new JButton("-");keys[13]=new JButton("+");keys[14]=new JButton("=");keys[15]=new JButton(".");keyPadJPanel=new JPanel();keyPadJPanel.setLayout(new GridLayout(4,4));for(int i=7;i<=10;i++)keyPadJPanel.add(keys[i]);for(int i=4;i<=6;i++)keyPadJPanel.add(keys[i]);keyPadJPanel.add(keys[11]);for(int i=1;i<=3;i++)keyPadJPanel.add(keys[i]);keyPadJPanel.add(keys[12]);keyPadJPanel.add(keys[0]);for(int i=15;i>=13;i--)keyPadJPanel.add(keys[i]);add(lcdJTextField,BorderLayout.NORTH);add(keyPadJPanel,BorderLayout.CENTER);}}[程序运行过程]4. 运行以下程序,并理解程序运行的结果?[程序清单]import java.io.*;public class ExceptionTest{public static void main(String args[]) {for(int i = 0; i < 4;i++) {int k;try {switch( i ) {case 0: //divided by zeroint zero = 0;k = 911 / zero;break;case 1: //null pointerint b[ ] = null;k = b[0];break;case 2: //array index out of boundint c[ ] = new int[2];k = c[9];break;case 3: //string index out of boundchar ch = "abc".charAt(99);break;}}catch(Exception e) {System.out.println("\nTestcase #" + i + "\n");System.out.println(e);}}}}[程序运行结果(截图)][程序功能分析]利用for循环语句实现4次运行,再利用switch语句实现的输出提示语。
Java GUI编程
对话框JDialog,构造方法有:
JDialog(Frame JDialog(Frame JDialog(Frame JDialog(Frame modal); owner); owner,Boolean modal); owner,String title); owner,String title,Boolean
布局管理器(layout manager)
Java常见的几种布局管理器有:
FlowLayout BorderLayout CardLayout GridBagLayout BoxLayout GridLayout
每种布局管理器都确定了其中的组件的位置 和大小,程序员不应自己修改其位置和大小。
创建顶层窗口,例如JFrame、JApplet等。 构建若干个组件及容器。 确定布局管理器。 将组件添加到容器中。 设置组件的颜色、字体等属性。 添加组件的事件处理。
事件(event)
事件(event):基于窗口的Java应用程序 将用户的操作(例如单击按钮、鼠标移动等) 抽象为“事件”。Java定义了大量事件类, 包含在java.awt.event和 javax.swing.event包中。 事件源(event source):每一个可以触发 事件的组件被当作事件源。 监听器(listener):用来接收和处理每一种 事件。不同类型的事件对应不同的监听器。
事件
传递给
}
事件处理的软件实现
事件类(XXXEvent) 事件监听接口(XXXListener) 组 件 的 注 册 监 听 接 口 方 法 (addXXXListener()方法)
示例程序见:Demo_Event.java
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验十一 Java的GUI编程初步程序清单11-1//ButtonCounter.javaimport javax.swing.*;import java.awt.*;public class ButtonCounter extends JFrame {public ButtonCounter() {super("显示按钮窗口");ImageIcon Icon = new ImageIcon("image/image.gif");JButton jbt1 = new JButton("按钮",Icon);JButton jbt2 = new JButton("按钮",Icon);JButton jbt3 = new JButton("按钮",Icon);JPanel p1 = new JPanel();p1.add(jbt1);JPanel p2 = new JPanel();p2.add(jbt2);JPanel p3 = new JPanel();p2.add(jbt3);JPanel p4=new JPanel();p4.add(jbt2);JPanel p5=new JPanel();p5.add(jbt3);getContentPane().setLayout(new FlowLayout());getContentPane().add(p1);getContentPane().add(p2);getContentPane().add(p3);getContentPane().add(p4);getContentPane().add(p5);}public static void main(String[] args) {// Create a frame and set its propertiesJFrame frame = new ButtonCounter();frame.pack();frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setVisible(true);}}程序清单11-2://PasswordVerification.java1import javax.swing.*;2import java.awt.event.*;3import java.awt.*;4public class PasswordVerification extends JFrame implements ActionListener{5JLabel userLabel;//定义用户标签提示6JLabel passwordLabel;//定义密码标签提示7JTextField userText;//定义用户文本框8JPasswordField passwordText;//定义密码文本框9int count=1;//统计输入信息的次数10public PasswordVerification() {11super("请输入信息");12得到容器对象container;13container.setLayout(new FlowLayout());//设置默认布局1415创建密码标签1617创建密码输入文本框18//注册事件监听者;19container.add(userLabel);20container.add(userText);21container.add(passwordLabel);22container.add(passwordText);23setSize(240,100);24setVisible(true);25}26事件处理27String userName=new String("陈三");//假设为正确的用户名;28String password=new String("12345678");//假设为正确的密码;29if(e.getSource()==passwordText){30count++;31char[] passwords=passwordText.getPassword();32if(userText.getText().equals(userName)&&password.equals(new String(passwords)))33{34JOptionPane.showMessageDialog(null, "欢迎您:" + userName);35System.exit(0);36}37else if(count>3)38System.exit(0);39else{40JOptionPane.showMessageDialog(null,userText.getText()+"请输入正确信息");41}42}43}44public static void main(String args[]){45PasswordVerification pv=new PasswordVerification();46pv.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);47}48}程序清单11-3://CardManager.java1import javax.swing.*;2import java.awt.*;3import java.awt.event.*;4public class CardManager extends JFrame{5JLabel nameLabel,sexLabel,titleLabel,unitLabel;6JLabeladdressLabel,telLabel1,telLabel2,mobileLabel,faxLabel,emailLabel;7JTextField nameTxt,unitTxt,addressTxt;8JTextField telTxt1,telTxt2,mobileTxt,faxTxt,emailTxt;9JRadioButton sexBtn1,sexBtn2;10JComboBox titleBx;11JButton okBtn,cancelBtn;12public CardManager() {13super("名片录入管理");14Container c=getContentPane();15JPanel centerPanel=new JPanel();//输入面板16nameLabel=new JLabel("姓名");//定义姓名标签17nameTxt=new JTextField(10);//定义姓名文本输入框18centerPanel.add(nameLabel);19centerPanel.add(nameTxt);20sexLabel=new JLabel("性别");//定义性别标签21定义性别单选按钮122;//定义性别单选按钮223ButtonGroup group=new ButtonGroup();24group.add(sexBtn1);25group.add(sexBtn2);26centerPanel.add(sexLabel);27centerPanel.add(sexBtn1);28centerPanel.add(sexBtn2);29titleLabel=new JLabel("称谓");//定义称谓标签30String title[]={"总裁","总经理","经理","主任","处长","院长","校长","科长","教授","讲师"};//定义称谓内容31创建称谓文本输入框32titleBx.setMaximumRowCount(5);33centerPanel.add(titleLabel);34centerPanel.add(titleBx);35unitLabel=new JLabel("工作单位");//定义工作单位标签36unitTxt=new JTextField(30);//定义工作单位输入框37centerPanel.add(unitLabel);38centerPanel.add(unitTxt);39addressLabel=new JLabel("工作地址");//定义工作地址标签40addressTxt=new JTextField(30); //定义工作地址输入框41centerPanel.add(addressLabel);42centerPanel.add(addressTxt);43telLabel1=new JLabel("电话");//定义电话1标签44telTxt1=new JTextField(15);//定义电话1输入框45centerPanel.add(telLabel1);46centerPanel.add(telTxt1);47telLabel2=new JLabel("电话");//定义电话2标签48telTxt2=new JTextField(15); //定义电话2输入框49centerPanel.add(telLabel2);50centerPanel.add(telTxt2);51mobileLabel=new JLabel("手机");//定义手机标签52mobileTxt=new JTextField(15); //定义手机输入框53centerPanel.add(mobileLabel);54centerPanel.add(mobileTxt);55faxLabel=new JLabel("传真");//定义传真标签56faxTxt=new JTextField(15);//定义传真输入框57centerPanel.add(faxLabel);58centerPanel.add(faxTxt);59emailLabel=new JLabel("E-mail");//定义email标签60emailTxt=new JTextField(32);//定义email输入框61centerPanel.add(emailLabel);62centerPanel.add(emailTxt);63JPanel sPanel=new JPanel();//按钮面板64okBtn=new JButton("确定");//定义确定按钮65cancelBtn=new JButton("取消");//定义取消按钮66监视cancelBtn的动作67public void actionPerformed(ActionEvent e){68判断事件源是否是cancelBtn;69System.exit(0);70}71}72});73sPanel.add(okBtn);74sPanel.add(cancelBtn);75 c.setLayout(new BorderLayout());76将centerPanel放置c中的中间位置;77sPanel 放置c中的南面的位置;78setSize(418,250);79setVisible(true);80}81public static void main(String args[]){82CardManager cm=new CardManager();83cm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);84}85}程序清单11-4//ArtFont.javaimport javax.swing.*;import java.awt.*;import java.awt.event.*;public class ArtFont extends JFrame implements ActionListener{JComboBox fontType,fontSize;JCheckBox boldBx;//粗体按钮JCheckBox italicBx;//斜体按钮JButton colorBtn;//颜色按钮;String[] fontNames;//字体名称;String[] fontSizes;//字体尺寸;JLabel label;//输入提示标签;JTextField inputText;//文字输入框;JTextArea txtArea;//文字显示区;JPanel fontPanel;//字体设置;JPanel showPanel;//显示效果区Font font;int boldStyle,italicStyle,underlineStyle;int fontSizeStyle;String fontNameStyle;Color colorStyle=Color.black;//设置字体的默认颜色为黑色;public ArtFont() {super("字体设置");//设置默认字体boldStyle=0;italicStyle=0;underlineStyle=0;fontSizeStyle=10;fontNameStyle="宋体";font=new Font(fontNameStyle,boldStyle+italicStyle,fontSizeStyle);fontPanel=new JPanel();fontPanel.setLayout(new FlowLayout());//设置字体名字GraphicsEnvironment ge=GraphicsEnvironment.getLocalGraphicsEnvironment(); fontNames=ge.getAvailableFontFamilyNames();//获得系统中所有字体的名字;fontType=new JComboBox(fontNames);fontType.setEditable(false);fontType.setMaximumRowCount(10);fontType.addItemListener(new ItemListener(){public void itemStateChanged(ItemEvent e){ //实现监听字体名字改变的事件}});//设置字体大小fontSizes=new String[63];for(int i=0;i<63;i++){fontSizes[i]=Integer.toString((i+10));}fontSize=new JComboBox(fontSizes);fontSize.setEditable(false);fontSize.setMaximumRowCount(10);fontSize.addItemListener(new ItemListener(){public void itemStateChanged(ItemEvent e){ //实现监听字体大小改变的方法}});//设置粗体选择按钮;boldBx=new JCheckBox("粗体");boldBx.addItemListener(new ItemListener(){public void itemStateChanged(ItemEvent e){ //实现监听选择粗体状态改变的方法}});//设置斜体选择按钮;italicBx=new JCheckBox("斜体");italicBx.addItemListener(new ItemListener(){public void itemStateChanged(ItemEvent e){//实现监听选择斜体状态改变的方法}}});//设置颜色选择;colorBtn=new JButton("颜色");colorBtn.addActionListener(this);//监听颜色按钮 //设置字体面板;fontPanel.add(fontType);fontPanel.add(fontSize);fontPanel.add(boldBx);fontPanel.add(italicBx);fontPanel.add(colorBtn);//设置输入提示标签label=new JLabel("输入");//设置文本输入框;inputText=new JTextField(30);inputText.addActionListener(this);//设置文本显示区;txtArea=new JTextArea(10,80);//20行80列;txtArea.setFont(font);//设置文本面板;showPanel=new JPanel();showPanel.add(label);showPanel.add(inputText);showPanel.setLayout(new FlowLayout());showPanel.add(new JScrollPane(txtArea));//设置容器;Container container=getContentPane();container.setLayout(new BorderLayout());container.add(fontPanel,BorderLayout.NORTH);container.add(showPanel,BorderLayout.CENTER);setSize(500,300);setVisible(true);}public void actionPerformed(ActionEvent e){if(e.getSource()==colorBtn){//改变颜色colorStyle=JColorChooser.showDialog(this,"选择字体颜色",colorStyle); colorBtn.setForeground(colorStyle);txtArea.setForeground(colorStyle);}else if(e.getSource()==inputText){//将输入文字在文字显示区表示;txtArea.setText(inputText.getText());}}public static void main(String args[]){ArtFont artFont=new ArtFont();artFont.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}}程序清单11-5//Knight.javapublic class Knight {protected int x;//x坐标;protected int y;//y坐标;protected pos;//移动的方向;public Knight() {this.x=0;this.y=0;this.pos=0;}public Knight(int curX,int curY,int curDir){//设置马的属性; this.x=curX;this.y=curY;this.pos=curDir;}public void setX(int curX){//设置x坐标this.x=curX;}public void setY(int curY){//设置y坐标this.y=curY;}public void setPos(int curDir){//设置移动方向this.pos=curDir;}public int getX(){//获得x坐标return this.x;}public int getY(){//获得y坐标return this.y;}public int getPos(){//获得当前的移动方向;return this.pos;}}程序清单11-6//KnightTourGame.javaimport javax.swing.*;import java.awt.event.*;public class KnightTourGame extends JFrame implements ActionListener{private JDesktopPane jDeskPanel;//菜单定义;private JMenuBar gameBar;//菜单条private JMenu gameMenu,helpMenu;//游戏菜单和帮助菜单private JMenuItem startItem,exitItem,helpItem,versionItem;//startItem开始菜单项、exitItem退出菜单项、helpItem关于菜单项//versionItem版本菜单项public KnightTourGame(){super("Knight Tour 问题");createMenu();//创建菜单;setJMenuBar(gameBar);//设置菜单;jDeskPanel=new JDesktopPane();//设置多文档的桌面getContentPane().add(jDeskPanel);//添加多文档的桌面setSize(700,600);setVisible(true);}public void createMenu(){//创建菜单创建菜单条创建菜单项”游戏”创建子菜单项“开始”创建子菜单项“退出”startItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_1, ActionEvent.ALT_MASK));//设置快捷键Alt+1;exitItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_2,ActionEvent.ALT_MASK));//设置快捷键Alt+2;添加开始菜单到游戏菜单添加退出菜单到游戏菜单;startItem.addActionListener(this);exitItem.addActionListener(this);创建菜单项“帮助”创建子菜单项“版本”helpItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_3,ActionEvent .ALT_MASK));//设置快捷键Alt+3versionItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_4,ActionEvent.ALT_MASK));//设置快捷键Alt+4添加关于子菜单到帮助菜单添加版本子菜单到帮助菜单helpItem.addActionListener(this);versionItem.addActionListener(this);gameBar.add(gameMenu); //添加游戏菜单到菜单条gameBar中gameBar.add(helpMenu); //添加帮助菜单到菜单条gameBar中}public void actionPerformed(ActionEvent e){if(e.getSource()==startItem){JInternalFrame mainFrame=new JInternalFrame("Knight Tour游戏",true,true,true,true);//定义一个游戏运行窗口KnightTourPanel mainPanel=new KnightTourPanel();//创建游戏控制面板对象mainPanel,KnightTourPanel类需要用户自己定义;mainFrame.getContentPane().add(mainPanel);//将游戏控制面板添加到游戏运行窗口mainFrame.setSize(460,530);jDeskPanel.add(mainFrame);//添加游戏运行窗口到桌面中;mainFrame.setVisible(true);}else if(e.getSource()==exitItem){System.exit(0);}else if(e.getSource()==helpItem){JOptionPane.showMessageDialog(null,“暂时没有”);}else if(e.getSource()==versionItem){JOptionPane.showMessageDialog(null," 作者:陈轶\n时间:2005年"); }}public static void main(String args[]){KnightTourGame ktg=new KnightTourGame();ktg.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}}。