11第十一章 Java的GUI编程初步实验代码

合集下载

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编程一、介绍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)应用程序。

本文将介绍使用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编程

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编程

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编程初步

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编程

Java中的GUI编程
性能优化:随着硬件和软件的不断发展,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应用开发的理论和实践能力。

通过本实验,学生将掌握使用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应用程序的开发。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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);}}。

相关文档
最新文档