JCombobox和ActionListener ItemListener

合集下载

说明书-推箱子-课程设计

说明书-推箱子-课程设计
图 4 游戏第 50 关界面 9
尚需解决的问题
游戏的背景音乐比较单一,可以通过在“选项”模式中添加“背景音乐导入”模 块,导入玩家自己喜欢的音乐。在此次课程设计中,我遇到了一些问题,如:对于面 向对象的方法了解不够透彻,运用到实际的软件开发中存在着困难;对于 Java 语言, 只学习到了一些最基本的知识,这导致编写程序时经常出现一些语法错误,而且要在 短时间内用 Java 语言来设计一个具体的系统是一个较大的挑战;还有对于正规开发一 个系统的流程不熟悉,适应起来比较慢,编写各个模块相对应的操作时,自己感觉难 以动手,这表明所学的知识不能灵活运用到实际中。
对于推箱子游戏,更是有了进一步的了解,其中用到了 9 张图片,用户可以通过 改变图片来改变游戏的显示界面,当然,这个是不被允许的,因为每个程序的代码都 有版权,但对于设计者而言,却可以更加清楚的了解代码的内部构造,达到熟能生巧 的效果。
游戏的帮助和关于设计人性化,在写代码是遇次课程设计,将我本周所 学的 JAVA 知识得到巩固和应用,在设计的过程中我遇到了很到问题,不过在老师和同 学们的帮助和自己的思考下还是很好的完成了。这此课程设计还让我懂得了写程序不
推箱子游戏 3
图 1 游戏运行界面 .2 任务执行流程图
游戏从第一关开始,按上下左右方向键控制小人移动来推动箱子,可以在游戏中 的任何时候按退出键退出。如果游戏无成功希望,可以按空格键回到当前任务的开始 状态;如果成功完成当前关,则显示通关信息,如果想继续闯,按回车闯下一关,否 则结束游戏。
游戏同时还具有时间和步数的记录,在开始游戏之前首先把图片添加到 pic 目录 下,程序会自动获取该目录下的所有文件。
系统模块图 本程序包括 5 个模块,分别是初始化模块、画图模块、移动箱子模块、移动小 模

详细设计文档实例

详细设计文档实例

SuperVCD系统需求分析一,命名规范1.标识符的命名标识符命名要严格遵循JA V A语法规定的命名规则(1)标识符只能以字母,下划线,美元符号开始。

(2)除开始的第一个字符外,其后可以是字母,下划线,美元符和数字。

(3)标识符要主要大小写,没有长度的限制,但是尽量使用简单,容易理解的命名方式(4)不能使用JA V A语言的保留字。

2.程序的结构组织将具有同一性质的类放在相同的包中,本项目分为三个包com.ascent.gui包主要用于存放客户端的图形界面程序com.ascent.module包主要用于存放用于处理数据的程序com.ascent.server包主要用于存放服务器端的程序docapi:存放Source APIbat:存放bat文件3.异常命名二,功能模块设计:& 查询模块的功能分析:1.用例列表:Customer(用户):使用该系统的人。

selectPublisher(选择分类):用户可以根据自己的需要选择不同地区。

showDetail(详细信息):当用户点击详细按钮时,页面会弹出详细对话框。

changelookandfeel(更改外观):用户可以根据自己的需要选择CDE外观、MS外观、传统Windows外观。

Help(帮助信息):当用户在遇到问题时,可以点击帮助按钮时,会出现关于选项。

Clear(清空页面):当用户点击推出按钮时,页面对话框中的内容。

File(文件):当用户点击文件按钮时,用户可以选择打开、保存、推出。

Exit(退出):当用户点击文件按钮时,关闭页面2用例图:&详细功能流程描述:1.查询●用户初始化MainFrame框架●用户选择发行地●用户触发了ItemChange事件●ItemChange监听器捕获用户的ItemChange事件●建立网络连接●发送选择数据到数据服务中心●数据服务中心根据接收的数据进行数据查询、封装操作●数据服务中心将封装后的数据通过网络发送到用户●用户在接收到数据后,即可在列表中得以显示●关闭网络连接2清空●用户点击“清空”按钮●用户触发ActionEvent事件●AcitonListener监听器捕获用户的ActionEvent事件●清空Jllist内容●恢复JCombox的默认选项3详细●用户点击“详细”按钮●用户触发ActionEvent事件●ActionListener监听器捕获用户的ActionEvent事件●建立连接●发送选择数据到数据服务中心●数据服务中心根据接收的数据进行数据查询、封装操作●数据服务中心将封装后的数据通过网络发送到用户●用户在接收到数据后,显示详细对话框●关闭连接4 退出●用户点击‘关闭’按钮●用户触发ActionEvent事件●ActionListener监听器捕获用户的ActionEvent事件●关闭窗口5 音乐分类●用户选择JComboBox[音乐分类]●用户触发ItemEvent事件●ItemListener监听器捕获用户的ItemListener事件●建立网络连接●发送选择数据到数据服务中心●数据服务中心根据接收的数据进行数据查询、封装操作●数据服务中心将封装后的数据通过网络发送到用户●在JList中显示该选项所对应的专辑列表●关闭连接&数据模型分析1.媒体发行地区通过MusicDataAccessor类来读取该数据并响应客户端请求2.艺术家-专辑名称<<colleciton>>通过MusicDataAccessor类来读取该数据并响应客户端请求3.时间对象Duration利用Duration类描述时间的长度,它包括小时,分和秒4.音乐曲目对象Track通过MusicDataAccessor类来读取数据并利用Track类向客户端输出音乐曲目详细信息。

JAVA期末复习资料2

JAVA期末复习资料2

Java期末复习题一、判断题1、在Java程序中发生异常时,JVM会找到每个符合条件的catch都执行一次。

( F )2、在Java程序中异常分为运行时异常和非运行时异常,非运行异常必须进行处理( F )3、异常处理的try-catch块后必须有finally块。

( F )4、异常处理器的排列次序影响处理异常的方法。

( T )5、用catch(Exception exception)语句可以捕获所有异常和错误。

( F )6、启动多线程必须调用start()方法, 如果调用run()方法则没有启动新的线程( T )7、run()方法是运行线程的主体,若run方法运行结束,线程就消亡了。

( T )8、线程可以用yield()方法使同优先级的线程运行。

( T )9、一个线程创建并启动后,它将执行自己的run()方法。

( T )10、线程可以用yield()方法使较低优先级的线程运行。

( F )11、每个Java线程的优先级都设置在常数1~12之间,默认的优先级设置为常数6。

(F )12、JFrame,JPanel,JApplet和JButton四种组件都属于容器组件.( F )13、BorderLayout是面板(JPanel)的缺省布局管理器。

( F )14、BorderLayout最多可以使用5个组件。

( T )15、一个面板(JPanel)不能被加入另一个面板(JPanel)中。

( F )16、菜单需要一个JMenuBar对象,以使他们能被添加到JFrame。

( T )17、标签(JLabel)可以在屏幕上显示一个字符或一幅图片。

( T )18、BorderLayout是容器javax.swing.JFrame默认的布局管理器。

(T )19、JTextArea可以用来接收多行文本的输入。

( T )20、在Java坐标系统中,X值从左向右增加。

( T )21、BorderLayout布局管理器把组件排列在北、南、东、西和中间区域。

java中addactionlistener用法

java中addactionlistener用法

java中addactionlistener用法Java是一种广泛应用于软件开发的编程语言,它具有简单易学、跨平台等特点,因此备受开发者的喜爱。

在Java中,addActionListener 是一种常用的方法,用于为按钮或其他组件添加事件监听器。

本文将介绍addActionListener的用法。

在Java中,addActionListener方法是用于为按钮或其他组件添加事件监听器的方法。

通过添加事件监听器,我们可以在用户与组件进行交互时执行特定的操作。

addActionListener方法的语法如下:public void addActionListener(ActionListener listener)其中,addActionListener方法接受一个ActionListener类型的参数listener,用于指定要添加的事件监听器。

要使用addActionListener方法,首先需要创建一个按钮或其他组件对象。

例如,我们可以使用JButton类创建一个按钮对象,代码如下:JButton button = new JButton("点击我");然后,我们可以创建一个实现了ActionListener接口的类,用于处理按钮点击事件。

例如,我们可以创建一个名为ButtonListener的类,代码如下:class ButtonListener implements ActionListener {public void actionPerformed(ActionEvent e) {// 在这里编写按钮点击事件的处理逻辑}}在ButtonListener类中,我们需要实现ActionListener接口,并重写其中的actionPerformed方法。

在actionPerformed方法中,我们可以编写按钮点击事件的处理逻辑。

接下来,我们可以将ButtonListener对象添加为按钮的事件监听器,代码如下:button.addActionListener(new ButtonListener());通过调用addActionListener方法,并将ButtonListener对象作为参数传入,我们就可以将ButtonListener对象添加为按钮的事件监听器。

GUI设计swing

GUI设计swing

电子商务 宋微
Java语言——Applet与GUI设计
15
在框架中填加组件
• 对于AWT的Frame对象: 调用Frame的add方法将组件添加到Frame对象上 • 对于Swing容器: 先获得容器的内容窗格 内容窗格(content pane)对象 内容窗格 将组件用add方法添加到内容窗格 内容窗格对象上 内容窗格 实际上JFrame对象是由多个窗格组成的:
电子商务 宋微
Java语言——Applet与GUI设计
11
一个简单的框架窗口。 例 一个简单的框架窗口。 SimpleFrame. // SimpleFrame.java javax.swing. import javax.swing.*; public class SimpleFrame{ public static void main(String args[]){ frame=new "); JFrame frame=new JFrame("Simple Frame "); frame.setSize(350 240) 350, frame.setSize(350,240); //新创建时为0×0像素 frame.setVisible(true); frame.setVisible(true); //窗口创建之后是不可见的 frame. frame.setDefaultCloseOperation (JFrame. CLOSE); (JFrame. EXIT _ON_ CLOSE); } 此句功能是当点击窗口的关闭按钮时将结束程序运行, }
电子商务 宋微
Java语言——Applet与GUI设计
14
例 通过继承JFrame类实现的窗口 将主方法写在本类中 // SimpleFrame.java import javax.swing.*; public class SimpleFrame extends JFrame{ public SimpleFrame(){ this("No Title"); } public SimpleFrame(String title){ super(title); setSize(350,240); setLocation(350,250); setVisible(true); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public static void main(String args[]){ SimpleFrame frame=new SimpleFrame("Simple Frame"); } }

java小说人物分析报告

java小说人物分析报告

一.实验题目自行下载自己最喜欢的小说1部。

存储为文本文档。

要求长篇小说,20万字以上。

任取其中10个人物,考虑他们的、别名等等一系列因素。

(1)统计每个人在小说中出现的次数并排序。

(2)统计每个人在小说中出现的篇幅跨度(第一次出现距最后一次出现的篇幅)并排序。

(3) 如果两人在相距较短的一段文字中出现,我们认为两人有关系,距离越短,关系越近。

自行设计统计标准,找出10个人中:1)关系最紧密的两个人,关系最不紧密的两个人。

2)输入一个人名,列出该人和其他人关系的紧密程度排名。

看与实际是否符合?如果不太符合,说明可能的原因。

二.需求分析本演示程序用 eclipse 编写,完成小说人物的出现次数统计,人物篇幅跨度统计以及人物间亲密程度的统计。

①统计人物出现次数:编写一个函数,当传入参数为人物名称时可统计该人物名在小说中的出现次数。

②人物篇幅跨度:编写一个函数,当传入参数为人物名称是可统计该人物名在小说中第一次出现的位置以及最后一次出现的位置,将最后一次出现位置减去第一次出现的位置比去小说通篇长度可得该人物名在小说中的人物篇幅跨度。

③人物间亲密程度:编写一个函数,当传入参数为人物名一和人物名二时,统计人物名一与人物名二同时在某个字数围出现的篇幅占人物名一的篇幅之比就是人物名一与人物名二的亲密程度。

④制作功能选择界面:界面包含有十个人物名的下拉列表,三个功能排序按钮,一个文本区域可输出统计结果。

三.概要设计1)为了实现上述程序功能,需要定义一下几个类:①Interface类:该程序的功能选择界面,包含main函数。

②Novelfunction1类:用来实现程序的第一个功能的类。

③Novelfunction2类:用来实现程序的第二个功能的类。

④Novelfunction3类:用来实现程序的第三个功能的类。

⑤Saver类:用来保存程序运行后的统计结果,结果将统计在result.txt中。

在程序运行中,在界面中的下拉列表选定一位人物,选定后在界面的文本区域中会输出该人物在小说中的出现次数,篇幅跨度以及与其他九个人物间的亲密程度;在界面中点击功能按钮“人物出现次数排序”,点击后文本区域会输出十个人物在小说中出现次数的升序排序;在界面中点击功能按钮“人物篇幅跨度排序”,点击后文本区域会输出十个人物在小说中篇幅跨度的升序排序;在界面中点击功能按钮“人物关系密度排序”,点击后文本区域中会输出十个人物间亲密程度最高的一组和亲密程度最低的一组结果。

JavaSwing界面设计所有控件及示例好

JavaSwing界面设计所有控件及示例好
15
示例:直接使用JFrame创建
import javax.swing.*; public class FirstJFrame {
public static void main(String[] args) { JFrame f = new JFrame(); f.setTitle("My First JFrame"); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setSize(300, 300); f.setVisible(true);
JFrame() 创建无标题窗口。 JFrame(String s) 创建标题名字是字符串s的窗口。 例如:JFrame f = new JFrame(“Hello”);
➢ 常用方法
setTitle(String title) 设置JFrame标题文本 get/ setSize():获取/设置JFrame的大小。 add(Object a):将组件添加到JFrame中。 dispose()关闭JFrame并回收用于创建窗口的任何资源。 setVisible(boolean b)设置JFrame的可见性。 setLocation(x,y) 设置JFrame在屏幕的位置
选课 保存
JList JFileChooser
确认 JButton 结果 JTextArea
要求输入完毕按“确认”将该学生的信息记录到“结果”中;按 “保存”将结果保存到一个指定的文件中;基本信息与结 果界面上下分布在一个JSplitPane中;屏幕下方显示当前
时间
21
示例:学生信息管理系统
步骤一:由JFrame创建初始的用户界面,获得JFrame的容器,

浙江工业大学java程序设计试卷及答案

浙江工业大学java程序设计试卷及答案

浙江工业大学2006/2007学年第一学期试卷A一、填空题(共8小题,每空1分,共20分)1、语句String s = new String("xyz");创建了2个String对象。

2、抽象方法是一种仅有方法头,没有具体方法体和操作实现的方法,该方法必须在抽象类之中定义。

静态方法是不能被当前类的子类重新定义的方法。

3、创建一个名为 MyPackage 的包的语句是package MyPackage; ,该语句应该放在程序的位置为:程序的第一行,该行前可有空格及注释。

4、如果一个Java Applet源程序文件只定义有一个类,该类的类名为MyApplet,则类MyApplet必须是Applet 类的子类并且存储该源程序文件的文件名为MyApplet.java 。

5、使用setLayout()方法为组件设置布局管理器,JFrame的缺省布局管理器是Borderlayout,内容面板的缺省布局管理器是Flowlayout。

6、Java.swing.JFrame.getContentPane()的返回类型是Container。

7、写出3个常见的异常例子:ArithmeticExcept、IOException和NullPointerException 。

Throwable是所有异常类的父类,重新抛出一个异常用throw语句。

8、编写一个线程可以用Runnable接口和继承Thread类来实现,线程通过 sleep() 方法可以休眠一段时间,然后恢复运行,当 stop() 时,线程进入死亡状态。

二、选择题(共10小题,每题2分,共20分)1、下列各项当中哪一个编译不会出错? (C ) A). Byte b = new Byte(123) B). Byte b = new Byte("123");C). Byte b = new Byte() ;b = 123 D). Byte b = new Byte((int)123.4)2、为AB类的一个无形式参数无返回值的方法method书写方法头,使得使用类名AB作为前缀就可以调用它,该方法头的形式为(静态成员方法)?( B)A) static void method( ) B) public void method( )C) final void method( ) D) abstract void method( )3、对于下列代码:public class Example{String str=new String("hello");char ch[]={'d','b','c'};public static void main(String args[]){Example ex=new Example();ex.change(ex.str,ex.ch);System.out.println(ex.str+"and"+ex.ch[0]);}public void change(String str,char ch[]){str="world";ch[0]= 'a';}}输出结果是: ( B )A) hello and d B) hello and a C) world and d D) world and a4、如果一个程序段中有多个catch,则程序会按如下哪种情况执行?( C )A)找到合适的例外类型后继续执行后面的catchB)找到每个符合条件的catch都执行一次C)找到合适的例外类型后就不再执行后面的catchD)对每个catch都执行一次5、在java程序中,下列关于线程的说法错误的是: ( B )A)run方法是运行线程的主体B)多个进程运行时执行顺序是按顺序执行的C)如果线程死亡,它便不能运行D)在java中,高优先级的可运行线程会抢占低优先级线程6、关于JDBC访问数据库的说法错误的是:( D )A) 建立数据库连接时,必须加载驱动程序,可采用Class.forName()实现B) 用于建立与某个数据源的连接可采用DriverManager类的getConnection方法C) 建立数据库连接时,必须要进行异常处理D) JDBC中查询语句的执行方法必须采用Statement类实现7、对于下列代码:public class Parent {public int addV alue( int a, int b) {int s;s = a+b;return s;}}class Child extends Parent { …….}下述哪些方法可以加入类Child? ( C)A) int addV alue( int a, int b ){// do something...}B) public void addV alue (int a, int b ){// do something...}C) public int addV alue( int a ){// do something...}D) public int addV alue( int a, int b ) {//do something...}8、对于下列代码:1) class Person {2) public void printV alue(int i, int j) {//... }3) public void printV alue(int i){//... }4) }5) public class Teacher extends Person {6) public void printV alue() {//... }7) public void printV alue(int i) {//...}8) public static void main(String args[]){9) Person t = new Teacher();10) t.printV alue(10);11) }12) }第10行语句将调用哪行语句?( D)A) line 2 B) line 3 C) line 6 D) line 79、下列语句错误的是:( D )A)ServerSocket svrsoc=new ServerSocket(8000);B)URL urlBase=new URL(“http://www. /”)C)File inFile = new File(“C:/ test.txt”);D)BufferedReader br = new BufferedReader(“C:/ test.txt”);10、下面说法错误的是:( C )A)单击JCheckBox (复选框)产生ItemEvent事件,并由ItemListener处理。

JAVA期末复习题一

JAVA期末复习题一

public class Test1{ public float aMethod(Float a, float b){} ***
} 将以下哪种方法插入行 *** 是不合法的。( ) (A) public float aMethod(float a,float b,float c){} (B) public float aMethod(float c,float d){} (C) public int aMethod(int a,int b){} (D) public float aMethod(int a,int b,int c){} 17、创建字符串 s: s=new String(“xyzy”);以下哪条语句将改变 s( D) (A) s.append(“a”) (B) s.concat(s) (C) s.substring(3) (D) 以上语句都不会 18、关于以下程序段,正确的说法是( B) String s1 = “ac”+ “def”; Strimg s2 = new String(s1); if(s1.equals(s2)) System.out.println(“==succeeded”); if(s1==s2) System.out.println(“.equals() succeeded”); (A) 行 4 与行 6 都将执行 (B)行 44 执行,行 6 不执行 (C) 行 6 执行,行 4 不执行 (D) 行 4、行 6 都不执行 19、关于以下代码段的说法正确的是(D ) String s = “abcde”; StringBuffer s1 = new StringBuffer(“abcde”); if(s.equals(s1))
()
6、 在异常处理中总是将可能产生异常的语句放在 try 块中,用 catch 子句去处理异常,而

java中addactionlistener用法

java中addactionlistener用法

Java中addActionListener用法在Java编程中,addActionListener是一个重要的方法,用于为GUI组件添加事件监听器。

本文将详细介绍addActionListener的用法,包括其作用、使用步骤以及示例代码。

1. addActionListener的作用addActionListener方法用于为按钮等可交互的GUI组件添加事件监听器,以便在用户与组件交互时执行相应的操作。

当用户点击按钮时,会触发一个事件,通过addActionListener方法可以为按钮注册一个监听器,当事件发生时,监听器中的代码将被执行。

2. addActionListener的使用步骤使用addActionListener方法需要按照以下步骤进行:步骤1:创建GUI组件首先,需要创建一个GUI组件,例如一个按钮,以便用户可以与之交互。

可以使用Swing或JavaFX等库来创建GUI组件。

步骤2:创建事件监听器接下来,需要创建一个实现ActionListener接口的事件监听器类。

可以通过实现ActionListener接口来定义自己的事件处理逻辑。

import java.awt.event.ActionEvent;import java.awt.event.ActionListener;public class MyActionListener implements ActionListener {@Overridepublic void actionPerformed(ActionEvent e) {// 在这里编写事件处理逻辑}}步骤3:为GUI组件添加事件监听器在创建GUI组件后,可以通过addActionListener方法为其添加事件监听器。

将步骤2中创建的事件监听器对象作为参数传递给addActionListener方法。

import javax.swing.JButton;public class Main {public static void main(String[] args) {JButton button = new JButton("Click me");button.addActionListener(new MyActionListener());}}步骤4:编写事件处理逻辑在步骤2中创建的事件监听器类中,需要编写事件处理逻辑。

JComboBox

JComboBox

JComboBox(选择框)组件JComboBox组件实现一个选择框,用户可以从下拉列表中选择相应的值,该选择框还可以设置为可编辑,当设置为可编辑状态时,用户可以在选择框中输入相应的值。

JComboBox 类提供的常用构造方法如表1所示。

表1 JComboBox类的常用构造方法在创建选择框时,可以通过构造函数直接指定该选择框包含的选项,例如下面的代码,将创建一个包含选项“男”和“女”的选择框:String[] sexs = { "男", "女" };JComboBox sexComboBox = new JComboBox(sexs);也可以通过方法addItem()或insertItemAt()向选择框中添加选项,以及通过方法setSelected Item()或setSelectedIndex()设置选择框的默认选项,还可以通过方法setEditable()将选择框设置为可编辑的,即选择框可以接受用户输入的信息。

JComboBox类提供的常用构造方法如表2所示。

表2 JComboBox类的常用方法可以通过A ctionListener侦听器或ItemListener侦听器捕获选择框被修改的事件,它们的区别是ActionListener侦听器只能捕获到一次ActionEvent事件,不过当选择框的选项为“硕士”时,如果重新选中选项列表中的“硕士”选项,ActionListener侦听器依然会捕获到一次ActionEvent事件,而ItemListener侦听器只捕获选择框真正被修改的ItemEvent事件。

但是ItemListener侦听器将捕获到两次ItemEvent事件,第一次为被修改的选项触发的,第二次是新选中的选项触发的。

在利用ItemListener侦听器捕获选择框被修改的事件时,可以通过ItemEvent事件的对象,获得触发此次事件的相关信息,例如通过getItem()方法获得选项内容;通过getStateChange()方法获得选项状态,如果是由被修改的选项触发的,则返回2,此时与静态常量DESELECTED的值相等;如果是由新选中的选项触发的,则返回1,此时与静态常量SELECTED的值相等。

JAVA复习题及答案

JAVA复习题及答案

JAVA复习题及答案第一章JAV A概述1.JA VA中哪三种平台:J2ME(嵌入式平台),J2SE(标准平台),J2EE(企业级平台).2.JA VA从第几版称为JA V A2:JA V A 1.2版。

3.JA VA有否指针:无。

4.JA VA的API指的是什么:Application ProgrammingInterface,JA V A的类库。

5.JA V A平台无关性是如何实现的:通过编译生成与平台无关的代码──字节码,而不是通常的特定机器上的机器码,由平台上的Java虚拟机中的Java解释器解释执行。

6.JA VA有哪两种程序形式:Application和Applet程序。

7.Application程序运行时系统调用程序的哪个方法:main()方法。

Applet程序执行时系统自动调用程序的哪个方法:init()方法。

8.绘图程序中系统自动调用哪个方法:paint(Graphics g)方法。

9.JDK是什么:Java开发工具包(Java Development Kit )的缩写,包括JAVA类库、JAVA编译器、JAVA解释器、运行时环境、命令行工具。

10.有哪几种主要的可视化的集成源程序编辑环境:Eclipse,JCreator, JBuilder等。

11.安装JDK的可执行文件是:jdk-1_5_0-windows-i586.exe12.安装JDK帮助文档的是:jdk-1_5_0-doc.zip第二章JAV A语言基础13.保留字是什么意思,能否用于程序员定义自己的类、方法、变量等名字:JA V A中已定义的用于特定用途的标识符。

不能。

14.i++与++i有什么区别?15.写出各种转义字符?p17。

\t, \n, \r, \‖, \’, \\16.编程良好习惯中,对象名、包名、类名、变量名、常量名、接口名、方法名中的字符的大小写如何设置?Package –名词且小写;Class--名词且第一个字母大写;Interface—同Class;Methods-动词且第一个字母小写,分隔词第一个字母大写,不用‖-―;Variable—第一个字母小写,不用‖_‖,‖$‖(对于inner class有意义);Constants—大写并用‖_‖17.标识符的用途:用于给类、方法、变量、接口、程序块、对象等起名字。

图形用户界面中常用组件

图形用户界面中常用组件

JComboBox组件
❖ JComboBox组件称为下拉列表框。
❖ 特点:将所有选项折叠收藏在一起,只显示 前面的或被用户选中的一个;用户可以在列 表中进行选择、或者直接输入所要的选项
事件响应
❖ JComboBox组件能够响应的事件分为选择 事件与动作事件。若用户选取下拉列表中 的选择项时,则激发选择事件,使用 ItemListener事件监听者进行处理;若用户 在JComboBox上直接输入选择项并回车时, 则激发动作事件,使用ActionListener事件 监听者进行处理。
❖ 产生事件时必须将按钮注册给实现ActionListener的 对象,同时编写该接口的actionPerformed (ActionEvent e)方法体。
❖ 监听器ActionListener接口,只有一个成员方法 actionPerformed (ActionEvent e)
❖ ActionEvent常用方法: getSource():获取引发事件的对象引用。 getActionCommand():获得与此动作相关的命令字符 串
例子
JTextField与JTextArea组件
❖ JtextField被称为文本框。它定义了一个单 行条形文本区,可以输出任何基于文本的 信息,也可以接受用户的输入。
❖ JTextArea被称为文本域。它与文本框的主 要区别是:文本框只能输入/输出一行文本, 而文本域可以输入/输出多行文本。
事件处理
事件响应
❖ JList组件的事件处理一般可分为两种:一种是当 用户单击列表框中的某一个选项并选中它时,将 产生ListSelectionEvent类的选择事件,此事件是 Swing的事件;另一种是当用户双击列表框中的 某个选项时,则产生MouseEvent类的动作事件。 JList类通过locatToindex( )方法来得知是单击还是 双击。

用java实现推箱子(sokoban)游戏

用java实现推箱子(sokoban)游戏

推箱子游戏一、功能描述:➢可以通过面板上的按钮或是键盘上的pageup,pagedown键选择上下关➢可以通过面板上按钮或是键盘上的Backspace键后退,一直后退自己想要的位置,知道游戏开始时的位置。

➢可以通过面板上的按钮或是键盘上的字母r重新开始当前关卡游戏。

➢可以在复选框选择想要玩的关卡。

二、界面及运行截图三、源代码(三部分)1、地图类package box;import java.io.BufferedReader;import java.io.File;import java.io.FileNotFoundException;import java.io.FileReader;//读取字符文件类FileReader import java.io.IOException;public class map {int[][] map=new int[20][20];int manX,manY;public map(int level){String filepath="mapc/"+level+".txt";File file = new File(filepath);FileReader fr = null;//利用FileReader流来读取一个文件中的数据BufferedReader br = null;//字符读到缓存里try {fr = new FileReader(file);br = new BufferedReader(fr);for (int i = 0; i < 15; i++){String line = br.readLine();//以行为单位,一次读一行利用BufferedReader 的readLine,读取分行文本byte[] point = line.getBytes();//将字符串转换为字节数组for (int j = 0; j < 15; j++) {map[i][j] = point[j] - 48;// 根据ASCall码表要减掉30H(十进制的48)if (map[i][j] == 5 || map[i][j] == 6 || map[i][j] == 7|| map[i][j] == 8){manX = i;manY = j;}}}}catch (FileNotFoundException e){e.printStackTrace();//深层次的输出异常调用的流程}catch (IOException e){e.printStackTrace();//深层次的输出异常调用的流程}catch(NullPointerException e){e.printStackTrace();//深层次的输出异常调用的流程}finally {if (br == null){try{br.close();}catch (IOException e){e.printStackTrace();}br = null;}if (fr == null){try {fr.close();} catch (IOException e){e.printStackTrace();}fr = null;}}}public int[][] getMap() {return map;}public int getManX() {return manX;}public int getManY() {return manY;}}2、游戏运行类package box;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.ItemEvent;import java.awt.event.ItemListener;import java.awt.event.KeyEvent;import java.awt.event.KeyListener;import java.util.*;import javax.swing.*;public class pushbox extends JFrame implements KeyListener,ActionListener{ map map_level=new map(1); //首次获取地图int[][] map=new int[15][15]; //地图上每个位置所对应的图片int[][] map_restart=new int[15][15]; //备用图片static int manX,manY; //人所处的位置static int level=1; //所处关卡static int step=0;Image[] picture; //地图上的所有图片ImageIcon[] image=new ImageIcon[10];Stack<Integer> back_stack = new Stack<Integer>(); //存储所前行的路径JButton next,previous,back,restart,exit; //按钮:下一关,上一关,重新开始,退出String current_level="第"+level+"关"; //当前所处关卡(右上角显示文本)String[] level_button=new String[13]; //复选框的容JComboBox selectBox; //选关复选框final int Up = 0;final int Down = 1;final int Left = 2;final int Right = 3;int[] dir_x = {-1, 1, 0, 0};int[] dir_y = {0, 0, -1, 1};public pushbox(){super("推箱子");getmap(map);previous=new JButton("上一关");next=new JButton("下一关");restart=new JButton("重新开始");back=new JButton("后退");exit=new JButton("退出游戏");for(int i=0;i<13;i++)level_button[i]="第"+Integer.toString(i+1)+"关";selectBox=new JComboBox(level_button);FlowLayout layout=new FlowLayout(); //布局模式Container c=getContentPane();c.setLayout(layout);layout.setAlignment(FlowLayout.CENTER); //控件在布局中的位置c.setBackground(Color.CYAN); //背景色c.add(previous);c.add(next);c.add(back);c.add(restart);c.add(selectBox);c.add(exit);previous.addActionListener((ActionListener) this);previous.addKeyListener(this);next.addActionListener((ActionListener) this);next.addKeyListener(this);back.addActionListener(this);back.addKeyListener(this);restart.addActionListener((ActionListener) this);restart.addKeyListener(this);exit.addActionListener((ActionListener) this);exit.addKeyListener(this);selectBox.addItemListener( //监听复选框点击事件new ItemListener(){public void itemStateChanged(ItemEvent e){if(e.getStateChange()==e.SELECTED){step=0;back_stack.clear(); //每次重新选关后都要清空路径栈level=selectBox.getSelectedIndex()+1; //获取所选的关卡map_level=new map(level); //重新获取对应关卡的地图getmap(map);current_level="第"+level+"关"; //右上角提示所处关卡文本的更新repaint(); //重画地图requestFocus(); //重新获取焦点(因为按钮事件后键盘事件不起作用)}}});for(int k=0;k<10;k++){image[k]=new ImageIcon("picture/"+k+".png"); //获取图片}picture=new Image[]{image[0].getImage(),image[1].getImage(),image[2].getImage(),image[3].getImage(),image[4].getImage(),image[5].getImage(),image[6].getImage(),image[7].getImage(),image[8].getImage(),image[9].getImage()};this.setFocusable(true);this.addKeyListener((KeyListener)this);setSize(640,640);setVisible(true);}//判断是否通关(方法是,检查地图中是否还有箱子编号4)public Boolean pass(){int p=0;for(int i=0;i<15;i++)for(int j=0;j<15;j++){if(map[i][j]==4) p++;}if(p==0) return true;else return false;}//获取地图上每个位置所对应的图片编号public void getmap(int[][] map){for(int i=0;i<15;i++)for(int j=0;j<15;j++)map[i][j]=map_level.map[i][j];manX=map_level.manX;manY=map_level.manY;}public void paint(Graphics g){super.paint(g);//提示信息back_stack.push(Down + 5); //这里是一个细节,先将“DOWN”存入栈g.drawString(current_level,500,90);g.drawString("第"+step+"步",400,90);g.drawString("用键盘上的R重新开始,Q退出游戏",200,565);g.drawString("用键盘pageup,pagedown切换关卡",200,580);g.drawString("用键盘上的上下左右键控制人的移动",200,600);g.drawString("用键盘上的Backspace键后退",200,620);//在面板上画地图for (int i = 0; i < 15; i++)for (int j = 0; j < 15; j++)g.drawImage(picture[map[i][j]],100+30*j,100+30*i, this);}public void Step(Graphics g){g.setColor(Color.cyan);g.drawString("第"+step+"步",400,90);step++;g.setColor(Color.BLACK);g.drawString("第"+step+"步",400,90);}public void move(int dir, Graphics g){int man = dir + 5;int dx = dir_x[dir];int dy = dir_y[dir];int x = manX;int y = manY;manX += dx;manY += dy;int origin_picture = map[manX][manY];int next_picture = map[manX + dx][manY + dy];if((map[manX][manY]==4||map[manX][manY]==3)&&(map[manX+dx][manY+dy]==2||map[ manX+dx][manY+dy]==4||map[manX+dx][manY+dy]==3)) //上面是箱子,箱子上面是墙或箱子{manX -= dx;manY -= dy;return ;}if(map[manX][manY]==2) //上面是墙{manX -= dx;manY -= dy;return ;}if(map[manX][manY]==1||map[manX][manY]==9){ //人上面是草地或是目的地g.drawImage(picture[man],100+30*manY,manX*30+100,this); //人的朝向变化if(map[x][y]==9) //原来位置是目的地g.drawImage(picture[9],100+30*y,100+30*x,this);else{ //原来位置是草地g.drawImage(picture[1],100+30*y,x*30+100,this);map[x][y]=1;}Step(g);}if((map[manX][manY]==4||map[manX][manY]==3)&&map[manX+dx][manY+dy]==1){//上面是箱子,箱子上面是草地g.drawImage(picture[man],100+30*manY,manX*30+100,this); //人的朝向变化if(map[manX][manY]==3) //若是移动一大目的地的箱子,原箱子位置值为9map[manX][manY]=9;if(map[x][y]==9) //原来位置是目的地g.drawImage(picture[9],100+30*y,100+30*x,this);else{ //原来位置是草地g.drawImage(picture[1],100+30*y,x*30+100,this);map[x][y]=1;}g.drawImage(picture[4],100+30*(manY+dy),(manX+dx)*30+100,this); //草地位置变箱子map[manX+dx][manY+dy]=4;Step(g);}if((map[manX][manY]==4||map[manX][manY]==3)&&map[manX+dx][manY+dy]==9){ //上面是箱子,箱子上面是目的地g.drawImage(picture[man],100+30*manY,manX*30+100,this); //人的朝向变化if(map[manX][manY]==3) //若是移动一大目的地的箱子,原箱子位置值为9map[manX][manY]=9;else map[manX][manY]=0;if(map[x][y]==9) //原来位置是目的地g.drawImage(picture[9],100+30*y,100+30*x,this);else { //原来位置是草地g.drawImage(picture[1],100+30*y,x*30+100,this);map[x][y]=1;}g.drawImage(picture[3],100+30*(manY+dy),(manX+dx)*30+100,this); //目的地位置变箱子map[manX+dx][manY+dy]=3;Step(g);}back_stack.push(next_picture);back_stack.push(origin_picture);back_stack.push(manY);back_stack.push(manX);back_stack.push(man);if(pass())JOptionPane.showMessageDialog(null, "恭喜你过关了!"); }//键盘事件public void keyPressed(KeyEvent e) {Graphics g=getGraphics();int dir ;switch(e.getKeyCode()){case KeyEvent.VK_UP:dir = Up;move(dir, g);break;case KeyEvent.VK_DOWN :dir = Down;move(dir, g);break;case KeyEvent.VK_LEFT:dir = Left;move(dir, g);break;case KeyEvent.VK_RIGHT:dir = Right;move(dir, g);break;case KeyEvent.VK_BACK_SPACE:back.doClick();break;case KeyEvent.VK_PAGE_DOWN :next.doClick();break;case KeyEvent.VK_PAGE_UP:previous.doClick();break;case KeyEvent.VK_R:restart.doClick();break;case KeyEvent.VK_Q :exit.doClick();break;}}public void keyReleased(KeyEvent e) {}public void keyTyped(KeyEvent e) {}//悔步后退public void step_back(Graphics g){g.setColor(Color.cyan);g.drawString("第"+step+"步",400,90);step--;g.setColor(Color.BLACK);g.drawString("第"+step+"步",400,90);}public void Back(){if(back_stack.size()==2)return;int dir=back_stack.pop() - 5; //获取上一步的方向int s = back_stack.pop();int t = back_stack.pop();int origin_picture = back_stack.pop();int netx_picture = back_stack.pop();int pre_dir = back_stElement();Graphics g=getGraphics();int dx = dir_x[dir];int dy = dir_y[dir];g.drawImage(picture[origin_picture],100+30*t,100+30*s,this);g.drawImage(picture[netx_picture],100+30*(t+dy),100+30*(s+dx),this);g.drawImage(picture[pre_dir],100+30*(t-dy),100+30*(s-dx),this);manX = s - dx;manY = t - dy;map[s][t] = origin_picture;map[s+dx][t+dy] = netx_picture;map[s-dx][t-dy] = pre_dir;step_back(g);}//按钮事件监听public void actionPerformed(ActionEvent e) {if(e.getSource()==restart){ //重新开始back_stack.clear(); //清空路径栈step=0;getmap(map);repaint();}else if(e.getSource()==exit) //退出游戏this.setVisible(false);else if(e.getSource()==next){ //下一关back_stack.clear();step=0;level++;if(level!=14){map_level=new map(level);getmap(map);current_level="第"+level+"关";repaint();}}else if(e.getSource()==previous){ //上一关back_stack.clear();step=0;level--;if(level!=0){map_level=new map(level);getmap(map);current_level="第"+level+"关";repaint();}}else if(e.getSource()==back)Back();requestFocus();}}3、开始界面package box;import java.awt.*;import java.awt.event.*;import javax.swing.*;public class Game extends JFrame implements ActionListener{ Image image[];ImageIcon icon;JButton start,tip,exit;Container c;public Game(){super("推箱子");c=getContentPane();FlowLayout layout=new FlowLayout();c.setLayout(layout);layout.setAlignment(FlowLayout.CENTER);icon=new ImageIcon("picture/game.png");image=new Image[]{icon.getImage()};start=new JButton("开始游戏");exit=new JButton("退出游戏");tip=new JButton("游戏说明");c.add(start);c.add(tip);c.add(exit);start.addActionListener(this);tip.addActionListener(this);exit.addActionListener(this);setSize(640,480);setVisible(true);}public void paint(Graphics g){super.paint(g);g.drawImage(image[0],10,65,this);}public static void main(String args[]){Game g=new Game();g.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}Overridepublic void actionPerformed(ActionEvent e) {if(e.getSource()==exit)this.setVisible(false);if(e.getSource()==start){this.setVisible(false);pushbox c=new pushbox();}if(e.getSource()==tip){String t="本游戏分为13关,难度逐关递增,可以自己选关";JOptionPane.showMessageDialog(null, t);}}}。

java实现简单扫雷小游戏

java实现简单扫雷小游戏

java实现简单扫雷⼩游戏本⽂实例为⼤家分享了java实现扫雷游戏的具体代码,供⼤家参考,具体内容如下import java.awt.BorderLayout;import java.awt.Color;import java.awt.Container;import java.awt.GridLayout;import java.awt.Insets;import bel;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.ItemEvent;import java.awt.event.ItemListener;import java.awt.event.MouseEvent;import java.awt.event.MouseListener;import java.util.Random;import javax.swing.JButton;import javax.swing.JComboBox;import javax.swing.JFrame;import javax.swing.JOptionPane;import javax.swing.JPanel;public class SaoLei implements MouseListener,ActionListener{JPanel p=new JPanel();JFrame frame = new JFrame("扫雷");@SuppressWarnings("rawtypes")JComboBox combobox = new JComboBox();JButton reset = new JButton("重新开始");Container container = new Container();//游戏数据结构SaoLeiConstant constant = new SaoLeiConstant();JButton[][] buttons = new JButton[constant.row][constant.col];//定义按钮int[][] counts = new int [constant.row][constant.col];//定义整型数组保存按钮下⽅雷数//创建构造⽅法public SaoLei() {//显⽰窗⼝frame.setSize(600,700);//600*700frame.setResizable(false);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setLayout(new BorderLayout());//添加重来、选择难度按钮addtopButton();//添加雷区按钮addButtons();//埋雷addLei();//添加雷的计数calcNeiboLei();frame.setVisible(true);}void addtopButton() {p.removeAll();p.add(reset);reset.setBackground(Color.green);reset.setOpaque(true);reset.addActionListener(this);//combobox.addItem("选择难度");combobox.addItem("新⼿难度");combobox.addItem("初级难度");combobox.addItem("中级难度");combobox.addItem("⾼级难度");combobox.addItem("⼤师难度");combobox.setBackground(Color.GREEN);@Overridepublic void itemStateChanged(ItemEvent e) {String item = e.getItem().toString();if(item == "新⼿难度") {constant.leiCount = 20;ResetGame();} else if(item == "初级难度") {constant.leiCount = 43;ResetGame();} else if(item == "中级难度"){constant.leiCount = 63;ResetGame();} else if(item == "⾼级难度"){constant.leiCount = 99;ResetGame();} else if(item == "⼤师难度") {constant.leiCount = 119;ResetGame();}}});p.add(combobox);frame.add(p,BorderLayout.NORTH);//p.add(new Label("总雷数:"+constant.leiCount,Label.CENTER)); //p.add(new Label("总雷数:"+constant.leiCount,Label.RIGHT)); }/*void addnanduButton() {nandu.setBackground(Color.green);nandu.setOpaque(true);nandu.addActionListener(this);frame.add(nandu,BorderLayout.WEST);}void addResetButton() {reset.setBackground(Color.green);reset.setOpaque(true);reset.addActionListener(this);//reset.addMouseListener(this);frame.add(reset,BorderLayout.NORTH);}*/void addLei() {Random rand = new Random();int randRow,randCol;for(int i=0; i<constant.leiCount; i++) {randRow = rand.nextInt(constant.row);randCol = rand.nextInt(constant.col);if(counts[randRow][randCol] == constant.LEICODE) {i--;} else {counts[randRow][randCol] = constant.LEICODE;//buttons[randRow][randCol].setText("X");}}}void addButtons() {frame.add(container,BorderLayout.CENTER);container.setLayout(new GridLayout(constant.row,constant.col)); for(int i=0;i<constant.row;i++) {for(int j=0;j<constant.col;j++) {JButton button = new JButton();button.setBackground(Color.white);button.setOpaque(true);button.addActionListener(this);button.addMouseListener((MouseListener) this);buttons[i][j] = button;}}void calcNeiboLei() {int count;for(int i=0;i<constant.row;i++) {for(int j=0;j<constant.col;j++) {count =0;if(counts[i][j] == constant.LEICODE) continue;if(i>0 && j>0 && counts[i-1][j-1] == constant.LEICODE) count++;if(i>0 && counts[i-1][j] == constant.LEICODE) count++;if(i>0 && j<19 &&counts[i-1][j+1] == constant.LEICODE) count++;if(j>0 && counts[i][j-1] == constant.LEICODE) count++;if(j<19 && counts[i][j+1] == constant.LEICODE) count++;if(i<19 && j>0 && counts[i+1][j-1] == constant.LEICODE) count++;if(i<19 && counts[i+1][j] == constant.LEICODE) count++;if(i<19 && j<19 && counts[i+1][j+1] == constant.LEICODE) count++; counts[i][j] = count;buttons[i][j].setMargin(new Insets(0,0,0,0));//让按钮随按钮上的图案变化 //buttons[i][j].setText(counts[i][j] + "");}}}@Overridepublic void actionPerformed(ActionEvent e) {JButton button = (JButton)e.getSource();if(button.equals(reset)) {ResetGame();//重新开始游戏} else {int count = 0;for(int i=0;i<constant.row;i++) {for(int j=0;j<constant.col;j++) {if(button.equals(buttons[i][j])) {count = counts[i][j];if(count == constant.LEICODE) {loseGame();} else {openCell(i,j);checkWin();}return;}}}}}public void mouseClicked(MouseEvent e) {JButton button = (JButton)e.getSource();if (e.getButton() == MouseEvent.BUTTON3) {//判断⿏标右击动作for(int i=0;i<constant.row;i++) {for(int j=0;j<constant.col;j++) {if(button.equals(buttons[i][j])) {if((buttons[i][j].isEnabled() == true)) {//buttons[i][j].setEnabled(false);buttons[i][j].setMargin(new Insets(0,0,0,0));//让按钮随按钮上的图案变化 buttons[i][j].setText("?");return;}}}}}}void ResetGame() {for(int i=0;i<constant.row;i++) {for(int j=0;j<constant.col;j++) {buttons[i][j].setText("");buttons[i][j].setEnabled(true);buttons[i][j].setBackground(Color.white);counts[i][j] = 0;calcNeiboLei();}void checkWin() {for(int i=0;i<constant.row;i++) {for(int j=0;j<constant.col;j++) {if(buttons[i][j].isEnabled() == true && counts[i][j] != constant.LEICODE ) return; }}JOptionPane.showMessageDialog(frame,"Yeah,你赢了!");}//使⽤递归⽅法打开格⼦void openCell(int i, int j) {if(buttons[i][j].isEnabled() == false) return;buttons[i][j].setBackground(Color.yellow);buttons[i][j].setOpaque(true);buttons[i][j].setEnabled(false);if(counts[i][j] == 0) {if(i>0 && j>0 && counts[i-1][j-1] != constant.LEICODE) openCell(i-1,j-1);if(i>0 && j<19 && counts[i-1][j] != constant.LEICODE) openCell(i-1,j);if(i>0 && j<19 &&counts[i-1][j+1] != constant.LEICODE) openCell(i-1,j+1);if(j>0 && counts[i][j-1] != constant.LEICODE) openCell(i,j-1);if(j<19 && counts[i][j+1] != constant.LEICODE) openCell(i,j+1);if(i<19 && j>0 && counts[i+1][j-1] != constant.LEICODE) openCell(i+1,j-1);if(i<19 && counts[i+1][j] != constant.LEICODE) openCell(i+1,j);if(i<19 && j<19 && counts[i+1][j+1] != constant.LEICODE) openCell(i+1,j+1); } else {buttons[i][j].setMargin(new Insets(0,0,0,0));buttons[i][j].setText(counts[i][j] + "");}}void loseGame() {for(int i=0;i<constant.row;i++) {for(int j=0;j<constant.col;j++) {int count = counts[i][j];if(count == constant.LEICODE) {buttons[i][j].setMargin(new Insets(0,0,0,0));buttons[i][j].setText("雷");buttons[i][j].setBackground(Color.red);buttons[i][j].setEnabled(false);} else {buttons[i][j].setMargin(new Insets(0,0,0,0));buttons[i][j].setText(count + "");buttons[i][j].setEnabled(false);}}}JOptionPane.showMessageDialog(frame,"error,你输了!");}public static void main(String[] args) {new SaoLei();}@Overridepublic void mousePressed(MouseEvent e) {// TODO Auto-generated method stub}@Overridepublic void mouseReleased(MouseEvent e) {// TODO Auto-generated method stub}@Overridepublic void mouseEntered(MouseEvent e) {// TODO Auto-generated method stubpublic void mouseExited(MouseEvent e) {// TODO Auto-generated method stub}}常量类public class SaoLeiConstant {final int row = 20;//⾏数30final int col = 20;//列数30final int LEICODE = 10;//定义雷下⽅的数字protected int temp = 20;protected int leiCount = temp;//雷数30}效果图更多精彩游戏,请参考专题以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。

swing

swing

JTextField
文本域,类似于JTextArea 初始化方式有三种 1. JTextField field = new JTextField(); 2. JTextField field = new JTextField(int length); 3. JTextField field = new JTextField(String content, int length); 取回文本框中的内容的方法: field.getText(); 也可以使用setText(String **)设置文本框中的信息。 还可以使用setEditable(boolean)设定文本框是否可编辑
JButton
按钮组件 需在类的定义时写明继承接口ActionListener 实例化方式: JButton button = new Jbutton(按钮名称); JButton button = new Jbutton(图像名称); 添加监听方式 button.addActionListener(this); 按钮反应处理 public void actionPerformed(ActionEvent e) { }
JLabel
标签组件 实例化方式 Jlabel label = new JLabel(**); 其中“**”可以是字符串,也可以是ImageIcon; 主要作用:显示对应的标签信息。需要指明的是 Jlabel对象无法添加鼠标监听和键盘监听,只是作 为显示信息的使用。
JComboBox
下拉列表框 如果在本类中需要使用JComboBox,则应当在类的定义 时继承接口ItemListener,接口实现的抽象方法方法是 public void itemStateChanged(ItemEvent e) { selectLocation = select.getSelectedIndex()+1 } 这个方法的作用是得到下拉列表中选中的索引。需要注意 的是开始时的selectLocation需要最好初始化喂为0,避免 null的出现。

使用Java的JCheckBox组件

使用Java的JCheckBox组件
• 软件开发 Software Development
使用 Java 的 JCheckBox 组件
文/欧阳桂秀

介 绍 了 Java 的 Swing 组 件
JCheckBox 的常用属性、事件响应。 要 使 用 组 件 JCheckBox 显 示 多 个 选
项, 用 户 可 根 据 需 要 选 择 其 中 的
JCheckBox 注 册 ActionEvent 事 件 监 听 者 的 方 法 是 addActionListener( ), 处 理 该 事 件 的 接 口 是 ActionListener, 具 体 的 事 件 处 理 的 程 序 放 在 该 接 口 中 的 方 法 public void actionPerformed(ActionEvent e) 里面。
一项或多项。
【关键词】Java JCheckBox 属性 事件响应
1 引言
Java 的 Swing 组件 JCheckBox 是复选框, 其特点是为用户提供多个选项,用户可以选中 其中的一项或多项。
它的继承关系如下: ponent
↳java.awt.Container ↳javax.swing.JComponent ↳javax.swing.AbstractButton ↳javax.swing.JToggleButton ↳javax.swing.JCheckBox
器 280 元 "); panel1=new JPanel( ); panel1.add(label4); panel1.add(label1); contentPane.add(panel1); panel2=new JPanel( ); panel2.add(check1); panel2.add(check2); panel2.add(check3); contentPane.add(panel2); panel3=new JPanel( ); panel3.add(label2); panel3.add(label3); contentPane.add(panel3); p4=new JPanel( ); p4.add(button); p4.add(text); contentPane.add(p4); check1.addItemListener(this); check2.addItemListener(this); check3.addItemListener(this); button.addActionListener(this); }

actionlistener用法

actionlistener用法

actionlistener用法`ActionListener`是Java中用于处理用户界面组件(如按钮、菜单项等)上的动作事件的接口。

当用户与界面组件交互,例如点击按钮时,`ActionListener`用于捕获并处理该动作事件。

以下是`ActionListener`的基本用法:1.导入必要的包和类:首先,确保你的Java类导入了`ActionListener`接口和相关的包。

```javaimport java.awt.event.ActionEvent;import java.awt.event.ActionListener;```2.实现`ActionListener`接口:在你的类中实现`ActionListener`接口,并实现`actionPerformed`方法。

这个方法会在用户执行动作时被调用。

```javapublic class MyActionListener implements ActionListener{@Overridepublic void actionPerformed(ActionEvent e){//在这里编写处理动作事件的代码}}```3.将`ActionListener`添加到组件:将`ActionListener`对象添加到希望监听的用户界面组件上,通常是按钮、菜单项等。

这通常在初始化用户界面时完成。

```javaJButton myButton=new JButton("点击我");MyActionListener actionListener=new MyActionListener();myButton.addActionListener(actionListener);```4.处理动作事件:在`actionPerformed`方法中编写处理动作事件的代码。

例如,当用户点击按钮时,可以在该方法内执行相应的操作。

```java@Overridepublic void actionPerformed(ActionEvent e){if(e.getSource()==myButton){//处理按钮点击事件的代码}}```通过上述步骤,你可以创建一个可以响应用户界面组件的动作事件的Java程序。

推箱子游戏设计与实现

推箱子游戏设计与实现

四川师范大学成都学院本科毕业设计推箱子游戏设计与实现学生姓名张起明学号所在系通信工程系专业名称通信工程班级2012级宽带一班陆园指导教师四川师范大学成都学院二○一六年五月推箱子游戏的设计与实现前言于如今竞争激烈的快节奏时代中,人们的生活水平越来越繁忙,因为此,愈来愈多的人感到内心的空虚与压力带来的烦躁,这些也带给人们许许多多心理上和身体上的困惑。

所以如何缓解当代人们的生活压力,已成为人们的共同夙愿。

这一次的这个基于JAVA的推箱子小游戏正是使用JAVA语言并且结合于Eclipses编译器,开发出了这样一款适合用于休闲的小游戏,在放松的同时也给忙碌的人们打开另一个思考的空间。

这一款基于JAVA开发的推箱子主要分为初始化、画图、移动小人、移动箱子以及功能控制共五个模块。

玩家可以通过控制游戏中的小人的移动来实现推动箱子,同时需要避开障碍物和死角方能将箱子推放到正确位置从而过关。

每关的难易程度各不相同,不仅可以供人们用以娱乐,还有助于开发智力,提高人们思考问题与想象的能力,改善人们的思维方式,拓展思维。

关键词:JAVA 解压推箱子游戏AbstractIn today's competitive era of fast-paced, people 's living level is becoming more and more busy, because of this, an increasing number of people have felt irritability of emptiness and pressure, these also bring people many psychological and physical puzzles. So how to alleviate the pressure of contemporary life, has become the common aspiration of the people. This time the based on Java Sokoban game is using the Java language and the combination of the eclipses of the compiler developed such a suitable for leisure game, in a relaxed but also to the busy people to open another thinking space. This is based on the JAVA development of the push box is divided into initialization, drawing, moving people, moving boxes and a total of five functional control module. Players can control the game through the villain's mobile to achieve the promotion of the box, while the need to avoid obstacles and dead side to push the box to the correct position so that. Each level of difficulty is different, not only can be used for people to entertain, but also helps to develop intelligence, improve people's ability to think about problems and imagination, improve people's way of thinking, expand thinking.Key Words:JAVA Relieve pressure Push box Game目录1.可行性研究设计目的灵活运用自己在学校学习期间所学到的理论知识和实际动手技能,并结合自己于课外查找到的资料,该推箱子游戏设计并开发基于JAVA,使自己能够熟悉和熟练应用开发过程及相关技能,培养独立思考能力,测试学习结果,实践和提高可行性研究前提基本需求:系统开发的总体任务是综合体现游戏本身的可操作性、美观性和及时性。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验八事件处理实验目的:掌握ActionListener和ItemListener以及为图片添加按钮,以及下拉列表的应用。

实验一1.实验题目:在一个容器中设置加,减,乘,除四个按钮,并设置两个文本域,在这两个文本域中分别输入两个数字,并按加,减,乘,除四个按钮中的一个,在第三个文本域中显示出结果2.实验代码:package Calculator;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.*;public class CalculatorExample{public static void main(String args[]){final JFrame frame=new JFrame();frame.setBounds(400,400,400,400);frame.setVisible(true);frame.setLayout(null);//添加加减乘除按钮final JButton addbutton=new JButton("加法");addbutton.setBounds(10,10,60,30);frame.add(addbutton);final JButton subductionbutton=new JButton("减法");subductionbutton.setBounds(80,10,60,30);frame.add(subductionbutton);final JButton multiplybutton=new JButton("乘法");multiplybutton.setBounds(150,10,60,30);frame.add(multiplybutton);final JButton divisionbutton=new JButton("除法");divisionbutton.setBounds(220,10,60,30);frame.add(divisionbutton);//添加两个文本域输入两个数final JTextField textfield1=new JTextField();final JTextField textfield2=new JTextField();final JTextField textfield3=new JTextField();textfield1.setBounds(30,50,100,30);textfield2.setBounds(140,50,100,30);textfield3.setBounds(60,100,100,30);frame.add(textfield1);frame.add(textfield2);frame.add(textfield3);frame.validate();//加法运算addbutton.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){try{intinteger1=Integer.parseInt(textfield1.getText());intinteger2=Integer.parseInt(textfield2.getText());if(e.getSource()==addbutton){int i=integer1+integer2;textfield3.setText(String.valueOf(i));}}catch(Exception ex){textfield3.setText("输入不是数字"); }}});subductionbutton.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){try{intinteger1=Integer.parseInt(textfield1.getText());intinteger2=Integer.parseInt(textfield2.getText());if(e.getSource()==subductionbutton){int i=integer1-integer2;textfield3.setText(String.valueOf(i));}}catch(Exception ex){textfield3.setText("输入不是数字");}}});multiplybutton.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){try{intinteger1=Integer.parseInt(textfield1.getText());intinteger2=Integer.parseInt(textfield2.getText());if(e.getSource()==multiplybutton){int i=integer1*integer2;textfield3.setText(String.valueOf(i));}}catch(Exception ex){textfield3.setText("输入不是数字");}}});divisionbutton.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){try{intinteger1=Integer.parseInt(textfield1.getText());intinteger2=Integer.parseInt(textfield2.getText());if(e.getSource()==divisionbutton){int i=integer1/integer2;textfield3.setText(String.valueOf(i));}}catch(Exception ex){textfield3.setText("输入不是数字");}}});}}3.编译结果实验二1.实验题目:在一个下拉列表中选其中一个,在容器的中央显示一个图片按钮2.实验代码:import javax.swing.*;import java.awt.*;import java.awt.event.*;import .URL;public class zhouqianyuan{public static void main(String args[]){final JFrame frame=new JFrame();frame.setBounds(300,300,500,500);frame.setVisible(true);//下拉列表final Icon icon[] =new Icon[3];URL ur1=IconExample.class.getResource("a.jpg");URL ur2=IconExample.class.getResource("b.jpg");URL ur3=IconExample.class.getResource("c.jpg");icon[0]=new ImageIcon(ur1);icon[1]=new ImageIcon(ur2);icon[2]=new ImageIcon(ur3);JComboBox list=new JComboBox();final String str[]={"第一张图片","第二张图片","第三张图片"};list.addItem("第一张图片");list.addItem("第二张图片");list.addItem("第三张图片");frame.add(list,BorderLayout.NORTH);//往按钮上添加图片时,应先把按钮添加到容器中,再监听final JButton button=new JButton();frame.add(button,BorderLayout.CENTER);list.addItemListener(new ItemListener(){public void itemStateChanged(ItemEvent e){for(int i=0;i<3;i++){if(e.getItem().toString().equals(str[i])){//getSelectedItem().toString()返回一个字符串,getSelectedItem()返回一个对象。

button.setIcon(icon[i]);button.setVisible(true);}}}});}}3.编译结果实验总结通过多次问老师,同学以及在自己不断的寻找错误并改正错误,我终于把图片导入成功了,通过这次实验,让我明白了贵在坚持。

相关文档
最新文档