}
答:红色、顺时针画圆
7.4 多媒体基础
简单应用:播放幻灯片、动画、音乐的方法
1010-7.小程序要播放音频文件,可使用类( ) A.Audio B.Jaudio C.AudioClip
D.JaudioClip
17.在Java语言中,要播放音频文件可以使用__________类。
1101-24.请写出java.applet.AudioClip控制声音播放的三个方法。 Loop();stop();play()
第八章 多线程
8.1 线程的基本概念
识记:线程与进程的区别,线程的各种状态、优先级,线程间的互斥与同步 1210-8. 阻塞状态的线程在消除引起阻塞的原因后,会转入 A. 死亡状态 B. 开始状态C. 就绪状态 D. 运行状态
18.线程从阻塞状态恢复到就绪状态,有三种途径:自动恢复、用resume()方法恢复和用_________方法恢复。notify()或notifyAll()
18.当线程调用resume()方法后,就进入__________状态。
1201-18.多线程程序设计中,让执行临界段程序时等待的线程结束等待,通常使用的方法有resume()、notify()或者 notifyAll() 。
1001-18.当线程使用完临界段后,为了使等待的线程恢复工作,需要调用的方法是__________。Notify()
1110-18.在Java中,线程的调度策略采用___抢占式____,优先级高的线程比优先级低的优先执行。
8.在以下四个供选的整数中,能作为线程最高优先级的整数是 ( C ) A.0 B.1 C.10 D.11
1404-8.以下能作为表示线程优先级的数值,并且级别最低的是
A.0 B.1 C.1 5
D.1 6
1010-8.以下是关于线程的叙述,正确的是( )
A.多线程的使用可以提高设备的平行工作能力,但是使系统管理变得复杂
B.同一个进程下的线程都有自己的状态、专用数据段和独立的内存资源 C.线程是能独立运行的程序
D.进程的执行效率比线程的执行效率高
1101-8.以下关于线程互斥和同步的叙述中,正确的是( ) A.多线程互斥使用各自资源的程序段,在操作系统中称为临界段 B.临界段的作用是使某线程能够使用其它线程的资源 C.可以使用notify()方法通知等待线程结束等待 D.线程的互斥和同步可以很好地解决死锁问题
1101-18.当线程处于新建状态后,调用了start()方法,该线程就处于___就绪__状态。 1110-8.设Thread对象thd的优先级为7,thd又创建了另一个Thread对象chd,如果未对chd 的优先级进行修改,则chd的优先级为 ( ) A.1 B. 5 C.7 D. 10
8.2 Thread类和Runnable接口
综合应用:用Thread子类实现多线程,用Runnable接口实现多线程 8.用Thread子类实现多线程的步骤顺序是( )
A.声明Thread类的子类,创建Thread子类的实例,让线程调用start()方法
B.声明Thread类的子类,在子类中重新定义run()方法,创建Thread子类的实例 C.创建Thread子类的实例,让线程调用start()方法
D.声明Thread类的子类,在子类中重新定义run()方法,创建Thread子类的实例,让线程调用start()方法
18.程序员用Java语言编写多线程应用程序,程序员能控制的关键性工作有两个方面:一是编写线程的_________方法;二是建立线程实例。run()
8.用Runnable接口实现多线程的主要工作是( )
A.声明实现Runnable接口的类,在类内实现run()方法,让线程调用start()方法。 B.声明实现Runnable接口的类,在类内实现run()方法,在类内声明线程对象,在init()方法中创建新线程,启动新线程。
C.声明实现Runnable接口的类,在类内实现run()方法,在类内声明线程对象,在Init()方法或start()方法中创建新线程,在start()方法中启动新线程。
D.声明实现Runnable接口的类,在类内实现run()方法,在init()方法中创建新线程,在start()方法中启动新线程。
8.在以下供选择的方法中,能让线程从阻塞状态恢复到就绪状态的方法是( ) A.start() B.init() C.resume() D.run() 1010-25.请写出用Runnable接口实现多线程的主要工作。 1110-25.请写出线程从阻塞状态恢复到就绪状态的三种途径。
8.3 线程互斥和同步
识记: 线程间的互斥与同步
简单应用: 线程互斥和同步的实现方法
1010-18.多线程互斥使用______的程序段,在操作系统中称为临界段。共享资源 8.用来定义临界段,能对共享对象的操作上锁的关键字是
A.static B.share C.serialize D.synchronized 1201-8.以下关于线程互斥和同步的叙述中,正确的是( ) A.临界段是线程互斥使用资源的程序段 B.临界段能使线程使用其它线程的资源 C.互斥和同步能很好地解决死锁问题 D.可用notify()方法让等待线程结束等待 1210-18. 线程之间的相互等待被称为线程的____同步______。 1404-18.当线程进入临界段后,发现需要与别的线程进行同步,则要调用的方法 是 ______。 Wait()
31.以下定义的类shareDataManager用于管理多个线程共享数据data。一些线程要减少data,另一些线程要增加data。由于data不可以是负值,修改data的方法对这些线程来说不仅要互斥,还要同步。类提供一个方法modiData()供修改data的线程调用,该方法在data修改结束后,应通知其它等待进入这个方法的线程。 class ShareDataManager{ int data=0;
________void modiData(int delta){ 在Java语言中,使用关键字synchronized定义临if(delta>=0){
界段,能对共享对象的操作上锁,使得某一时刻data+=delta;
只允许一个线程使用这个共享对象。但是为了同}else {
while(data <delta){ 步,可在临界段中使用wait()、notify()和try{System.out.println("发生等待!"); notifyAll()方法。wait()让线程一直等待,notify()wait();
方法通知第一个处于等待的线程结束等待。}catch(InterruptedException e){ }
notifyAll()方法使所有处于等待的线程都结束等}
data-=delta; 待,重新竞争CPU。 }
_________; }
ShareDataManager(int ititData){data=initData;} }
36.小应用程序创建一个线程。例子使用容器类方法getGraphics()获得Graphics对象,给线程作为画笔使用。请写出该程序中这个线程的工作内容。 import java.applet.*;import java.awt.*;
public class Class1 extends java.applet.Applet implements Runnable{ Thread redBall;Graphics redPen; int rx=0,ry=0; public void init(){ setSize(250,200);
redBall =new Thread(this); redPen=getGraphics();
redPen. setColor(Color.red); setBackground(Color.gray); }
public void start(){ redBall.start(); } public void run(){ while(true){
if(Thread.currentThread()==redBall){ rx=(int)(80*Math.random()); ry=(int)(80*Math.random()); red Pen.setColor(Color.red);
red Pen.fillOval(100+rx,100+ry,10,10); try{redBall.sleep(500);}
catch(InterruptedException e){} redPen.setColor(Color.gray);
redPen.fillOval(100+rx,100+ry,10,10); } } } }
参考答案:随机位置显示一个小圆,程序采用背景色重画的办法,清除前一次显示的小圆。 本题考核知识点是图形绘制和线程31.以下定义的类ShareData用于管理多个线程共享数据val。为了保证对共享数据val修改的完整性,线程对val的操作需要互斥,类ShareData中定义的方法modiData()就是供共享val的线程修改val的方法。程序共有20个线程共享val,有些减少val,有些增加val。
public class Class1 {
public static void main(String args[]){ ShareData mrc = new ShareData(50); Thread[] aThreadArray = new Thread[20];
System.out.println(\刚开始的值是:\ System.out.println(\多个线程正在工作,请稍等!\ for(int i = 0; i < 20; i++) { int d = i % 2 == 0 ? 50 : -30;
aThreadArray[i] = new Thread(new MyMultiThreadClass(mrc, d)); aThreadArray[i].start(); }
WhileLoop ://等待所有线程结束 while(true){
for(int i = 0; i < 20; i++)
if(aThreadArray[i]. isAlive() ___)continue WhileLoop; break; }
System.out.println(\最后的结果是: \}
}
class MyMultiThreadClass implements Runnable { ShareData UseInteger; int delta;
MyMultiThreadClass(ShareData mrc, int d) { UseInteger = mrc; delta = d; }
public void run() {
for(int i = 0; i < 1000; i++) { UseInteger.modiData(delta);
try {Thread.sleep(10) ;//做一些其他的处理 }catch(InterruptedException e){ } } } }
class ShareData { int val;
ShareData(int initValue){val = initValue; } int getVal(){return val;}
private void putVal(int v){val = v;}
_________ void modiData(int d){ synchronized putVal(getVal() + d); } }
1001-31.以下定义的类ShareData用于管理多个线程共享数据data。一个线程生成data,另一个线程使用data。约定,新生成的data只有被另一个线程使用后,才能生成下一个data。反之,一个data被使用后,也不能再继续使用。所以,生成和使用data的线程之间需要互斥和同步。以下是管理上述使用方式的类,类内有要管理的共享数据,以及对共享数据的存操作putData()和取操作getData()。 class ShareData{
int data;∥共享数据
4747 Java语言程序设计(一)
第一章 Jave语言基础
1.1 Java语言的特点
领会Java语言的特点、关键字
1010-11.Java语言采用多种机制来保证可移植性,其中最主要的是______。虚拟机 1110-11.Java语言是一种 ____强类型语言___ 语言,它约束程序员必须遵守规定编写程序,能让编译器检测出程序中尽可能多的错误。
1.2 Java应用程序和小应用程序
识记 Java应用程序与小应用程序的特点和区别
11.一个应用程序必须在某个类中定义的方法是______。main() 1201-11.能在浏览器上执行的Java程序被称为 小应用程序 。
1.3 Java程序的开发过程
11.Java程序的字节码文件的扩展名是_________。 Class
1001-11.Java的编译程序先将Java源程序翻译成与机器无关的__________。字节码 1101-11.Java源文件的扩展名是_____.java____。
1210-11. 如果Java源文件中有多个类,那么只能有一个__public____类。
1404-11.类Testll经Java编译程序编译后,产生的文件是 ______。Test11.class
1.4 标识符和关键字
简单应用:Java程序的标识符命名规则、注释、基本数据类型
标识符可以用来标识文件名、变量名、类名、接口名和成员方法名等,其构造规则如下:
1) 标识符由Java字母和Java数字组成; 2) 首字符必须是Java字母; 3) 除去关键字、false、true和null; 4) 所有标识符是区分大小写的。 注释:
1) 行注释 2) 块注释 3) 文档注释
// /* ?. */ /** ? */
1404-1.以下标识符中,不是..Java语言关键字的是
A.wait B.new C.long D.switch 1.下述字符组合不能作为Java程序标识符的是( ) A.Aa12 B.大x C.y小 D.5x 1.下面供选字符序列中,不属于...Java语言关键字的是( ) A.goto
B.null C.false D.native
1.在下述字符串中,不属于...Java语言关键字的是 ( C ) A.float
B.new C.java
D.return
1110-1.下面供选字符序列中,不属于...Java语言关键字的是 ( ) A. throw B. synchronizedC. protect D. try
1010-1.以下是关于Java语言关键字的叙述,其中正确的是( ) A.关键字可以用来描述类的成员类型,但是不能描述普通变量
B.关键字由字母(包括英文字母、下划线字符、美元字符、文字字符)和数字组成 C.关键字不可以用作变量、方法、类或标号的标识符 D.break和main都是Java语言的关键字
1.5 基本数据类型
0开头表8进制常量,数字只能(0-7) 1.下列字符组合不能作为Java整型常量的是( ) A.078
B.0x3ACB C.5000 D.0x3ABC
1.在Java语言中,用于标记回车符的转义字符是 A.\\b B./b C.\\n
D./n
1001-12.表达式¨23 & 18??的值是__________。 2318 1101-1.在Java语言中,int类型数据的长度是( ) A.1个字节 B.2个字节 C.4个字节 D.8个字节
11.在Java语言中,双精度型变量在内存中占____8______个字节。 1101-l4.布尔类型数组元素的默认初值是____false_____。
第2章 运算和语句
选择 填空 简答 程序填空
2.1 数据运算
识记: 领会:
常用运算符的定义、包声明语句(package)和导入语句(import) 条件运算和其他运算
2.Java语言中数值数据的类型能自动转换,按照从左到右的转换次序为 ( B ) A. byte→int→short→long→float→double B. byte→short→int→long→float→double C. byte→short→int→float→long→double D. short→byte→int→long→float→double
1404-2.以下数据类型转换中,必须进行强制类型转换的是
A.int→char B. short→long C.float→double D. byte→int 2.以下程序代码的输出的结果是( ) int x=53; System. out. println(1.0+x/2);
A.27.0 B.27.5 C.1.026 D.1.026.5
1404-12.表达式“45&20”的十进制值是 ______。 4 ?101100&010100 2.设有定义int i=6;,则执行语句“i+=i-1;??后,i的值为
A.10 B.11 C.12 D.13
1210-12. 运算符??<”、 “*”和“&&”按优先级从高到低的顺序排列为__* < &&____。 21.请写出表示条件“x=2与y=3有且只有一个成立”的Java表达式”。(x=2)!=(y=3)或(x=2&&y!=3)||(x!=2&&y!=3)
12.构造一个Java表达式:y/x>5,并且x!=0。这个表达式是_________。y/x>5 && x!=0
1101-12.表达式-4>>l的十进制值是______-2___。(解法:-4/(2的一次幂))
21.请写出表示year年是闰年的Java表达式。闰年的条件是:每4年一个闰年,但每100年少一个闰年,每400年又增加一个闰年。(year%4= =0) && (year%4!=0)||(year@0= =0) 简答
12.用条件运算符构造一个表达式:goal等于10时,表达式的值为“对了!”,否则,表达式的值为“错了!”。这个表达式是_________。
1010-2.执行以下代码,输出结果是( )
int x=5,y=7,u=9,v=6;
System.out.println(x>y ? x+2:u>v ? u-3:v+2); A.8 B.6 C.7 D.true 2.以下程序代码的输出结果是( )
int x=73;System.out.println(x>>1);
A.36 B.36.5 c. 37 D.true 1110-2.以下程序代码的输出的结果是 ( ) double x = 25.6;
System.out.println((int)x << 1);
A. 48 B. 50 C. 51 D. 52
1201-2.表达式“-1>>>1”的十进制值是( )
31
A.-2 B.2-1 C.-(231-1) D.232-1
12.在Java语言中,逻辑右移运算符为____>>>______。
2.2 语句
简单应用: 阅读简单程序的功能和输出结果,编写简单的程序
综合应用: Java语言语句的书写形式和语句的语义,算术运算符、自增自减运算符、关系运算符和逻辑运算符
1210-2. 以下关于Java语句的说法正确的是
A. continue语句必须出现在多路按值选择结构或循环结构中 B. return语句可以出现在方法体的外面 C. 编译系统会把单独的分号看成是空语句 D. break语句的作用是提早结束当前轮次循环
1001-21.请写出一段if语句,判断一个整数n是否为偶数。如果是偶数,输出“Yes.”;否则,输出“No.”。
If(n%2==0){System.out.println(“Yes”);}else{System.out.println(“No”);}
1110-12.在Java语言中, package_____ 语句用于表示出现在该文件中的所有类都属于这个程序包。
1010-21.请使用for循环语句计算S=1+double s=0.0
for (int i=1;s<=10;i++) s+=1.0/I;
1404-21.已知变量n,请写出使用for语句计算S?1?111????的值。 2310111????的代码。 23n1101-21.请写一个if语句,判断整数n是否同时满足“被3除余2,被7除余1”的条件,
满足时输出“OK”,否则输出“NO”。 1110-21.请使用for循环语句实现计算s?111的值。 ?????24202.以下程序代码的输出结果是( ) int x = 10; while (x > 7)
{ System.out.print(\;} A.**
B.*** C.* D.****
D.int
1101-2.在switch语句中,switch后面括号内的表达式的类型不能是( ) ..A.byte B.long C.char 1010-12.程序包声明的格式是______。
12.import语句的格式是______。12、import包名.类名; 1201-21.请写出以下程序段的执行结果。 int c=0,d,n=3758;
while(n>0){ if((d=n%l0)>c) c=d;n/=10;} System.out.println(\结果=\; 执行结果:结果=8
21.请写出下面程序段的执行结果。 int n=90; int k=2;
System.out.print(n+″=〞); while(k<=n){
if(k==n){System.out.println(n); break;}
else if(n%k==0){System.out.print(k+″*″);n=n/k;) else k++;
} 90=2*3*3*5
27.方法int maxDigit(int n)的功能是找出十进制整数n各位中最大的一位数字。例如,n=23765,该方法的返回值是7。 static int maxDigit(int n){ int c=0,d; while(n>0){
参考答案:n d=_______;
if(d>c) c=d; return c n/=10; }
________; }
27.方法int sigmaDigit(int n)的功能是求出十进制整数n的各位数字之和。例如,n=1234,该方法的返回值是10。
static int sigmaDigit( int n ) { int sum = 0, d; while( n > 0 ){ d=n% 10;
_________; sum+=d n/= 10; }
_________; return sum
1010-27.方法boolean isPrime(int n)的功能是判断正整数n(n>1)是否为质数。
static boolean isPrime(int n) {
int i;
if(n==2)return true; if(n%2==0)return false;
第七章 图形,图像与多媒体
7.1 绘图基础
识记:Graphics类的基本功能,坐标系统 领会:利用Graphics2D类设置绘图状态属性 简单应用:着色和设置字体
7.一般的绘图程序要定义一个JPanel子类。在JPanel子类中还要重定义一个方法,在这个方法中调用绘图方法,绘制各种图形。要重定义的方法是( ) A.paint() B.paintComponent() C.repaint() D.update()
1101-7.Java语言规定,程序绘图区域的坐标原点位于整个区域的( ) A.左上角B.右上角C.左下角 D.右下角
1001-17.要在JComponent 子类的组件中绘图,应重写__________方法。paintComponet() 1404-17.某应用程序定义的类C17是JPanel的子类,在类C17的对象中需要绘图,则在类 C17中应重写的方法是 ______。paintComponet()
1010-17.在某个组件中绘图,一般应该为这个组件所属的子类重写______方法。paint() 7.以下所述内容全部是字型要素的是( )
A.字体、字形和大小 B.字体、风格和字号 C.字形、风格和字号 D.字形、颜色和字号
7.以下不属于文字字型要素的是 ( A ) ...A.颜色 B.字体C.风格 D.字号
1404-7.以下术语中,属于文字字型风格属性的是
A.颜色 B.宋体C.斜体 D.字号
17.在Java语言中,用类Font对象设置字型。如果要设置的字型是:细明体、正常风格(Font.PLAIN),12磅字号,构造这样要求的Font对象fnA的代码是_________。Font
fnA=new Font(“细明体”,Font.PLAIN.12)
17.某个绘图方法设置成“异或模式”绘图,并用黄色作为异或模式设定的绘图颜色。如果当时背景色为红色,并用红色绘制线段,则线段的实际颜色是_________。(P140)黄色 1101-17. Java语言的绘图模式有两种,它们是正常模式和_________ 7.设置异或绘图模式的方法是
A.setXORMode() B.setPaintMode() C.XORMode()
D.PaintMode()
7.2 绘图
简单应用:利用Graphics2D类对象绘制几何图形、绘制二次、三次曲线
综合应用:显示文字,绘制基本几何图形
24.请写出一条语句,能够绘制一条从点(20,30)开始,长为100像素的水平线段。设调用的对象是类型为Graphics的g。
(P140)g.drawLine(20,30,120,30);或g.drawLine(120,30,20,30);
25.请写出使用Graphics2D类声明并创建一个左上角为(20,30)、边长为50的正方形对象square的语句。
1404-24.已知Graphics对象g,获得Graphics2D对象g2d,然后,用圆角长方形类创建对象 circle,该对象的左上角坐标是(30,40),半径是50。请写出实现以上要求的Java代 码。
100-24.设已经有Graphics2D对象g2d, 请用Java语句绘制一个矩形rect,其左上角坐标是(20,30),宽是120,高是30。
Rectangle2D rect=new Rectangle2D.Double(20,30,120,30)
G2d.draw(rect);
1201-7.设已经有Graphics2D对象g2d,RoundRectangle2D对象rRect,绘制对象rRect的代码是( )
A.g2d.draw(rRect) B.g2d.drawRoundRect(rRect) C.rRect.draw() D.rRect.drawRoundRect() 1201-17.在异或模式下绘图时,实际绘制的颜色是由当前正要绘制的颜色、原先绘制的颜色,以及 异或模式设定的颜色 作特定的运算确定的。
24.要用Graphics2D类的方法画一个图形,首先要把参数对象g强制转换成Graphics2D对象;然后,用图形类提供的静态方法Double()创建一个图形对象;最后,以图形对象为参数调用Graphics2D对象的draw()方法绘制这个图形。请写出用这样的方法绘制一条线段的程序段,线段的两个端点分别是(10.0,10.0)和(30.0,30.0)。
Graphics2D g2d=( Graphics2D) g;
Line2D line=new Line2D.Double(10,20,30,40); G2d.draw(line)
7.设已经有Graphics2D对象g2d,Rectangle2D对象r,绘制对象r的代码是( ) A.g2d.draw(r)B.g2d.drawRect(r)C.r.draw() D.r.drawRect()
1110-7.设已经有Graphics2D对象g2d,Line2D对象line,绘制对象line的代码是( ) A.g2d.draw(1ine) B.g2d.drawLine(1ine) C.1ine.draw()D.1ine.drawLine() 1110-17.在Graphics类中,用于在指定的位置显示字符串的方法是 _____darwString()__ 。
7.3 图像处理基础
简单应用:显示图像和图像缓冲
1210-17. Java语言的图像处理功能被封装在___ Image _______类中。
30.这是一个播放幻灯片的小应用程序中的paint()方法。设幻灯片已由小应用程序的init()方法装入内存,并存放于myImage数组中,幻灯片的张数放于变量num中,paint()方法要播放的幻灯片号是int currentImage = 0; final int num = 30;
Image [ ] myImage = new _________ [num]; Image ??
public void paint(Graphics g) {
if ((mylmage[currentImage]) != null)
g. _________ (myImage[currentImage], 10, 10, drawImage myImage [currentImage].getWidth(this),
myImage [currentImage].getHeight(this), this); }
1001-30.以下是一个用鼠标自由作画的小应用程序。最简单的方法是根据鼠标所在位置画点,跟随鼠标的移动,不断画圆点,就能实现用鼠标作画。 import java.awt.*; import java.awt.event.*;
public class Test30 extends java.applet.Applet implements MouseMotionListener { Color color;int lineSize=2: int x=-1,y=-l; public void init(){
setLocation(30,20); setSize(300,300);
setBackground(Color.green);addMouseMotionListener(this); }
public void paint(Graphics g){ if(x!=-1&&y!=-1) {
g.setColor(color);g.fillOval(x,y,1ineSize,lineSize); } }
public void mouseMoved(MouseEvent e){} public void mouseDragged(MouseEvent e){
x=e.getX();y=e.getY();___ repaint()______; }
public void ______ update()__ (Graphics g){ paint(g);} ; }
1010-30.某小应用程序的界面有两个按钮,点击“画圆”按钮,程序在窗口画一个圆,点击“画矩形”按钮,程序在窗口画一个矩形。 import java.applet.*; import java.awt.*; import java.awt.event.*;import javax.swing.*;
public class Classl extends Applet implements ActionListener { boolean c = false; int r = 50,a = 50, b = 50; JButton bl, b2; public void init(){
setSize(200, 200); setBackground(Color.blue);
b1 = new JButton(\画 圆\画矩形\ b1.addActionListener(this); b2.addActionListener(this); add(b1); add(b2); setVisible(true); }
public void (Graphics g){ g.clearRect(70, 100, 130, 200); g.setColor(Color. red);
if(c) g.drawRoundRect(70, 100, r, r, r, r); else g.drawRect(70, 100, a, b); }
public void update(Graphics g){ paint(g); } public void actionPerformed(ActionEvent e){ if(e.getSource()==b1) { c = true; } else if(e.getSource()==b2){ c = false; } ; }
}
34.阅读下列程序,请写出该程序的功能。
import java.applet.*; import javax.swing.*; import java.awt.*; import java.awt.event.*;
public class Test34 extends Applet implements ActionListener { JTextField text;int r; JPanel panel; public void paint(Graphics g){
Graphics gc = panel.getGraphics();
gc.clearRect(0,0, panel.getWidth(), panel.getHeight()); gc.setColor(Color.red); gc.fillOval(10, 10, r, r);
}
public void init() {
text = new JTextField(10); panel = new JPanel(); setSize(200, 100); setLayout(new GridLayout(2,1)); add(text); add(panel); text.addActionListener(this); } 以文本框输入的public void actionPerformed(ActionEvent e) { 数字为半径,(1if (e.getSource() == text) { 分)以(10,10)r = Integer.parseInt(text.getText()); 为左上角,(1分)repaint(); 填充一个红色(1} 分)的圆。(1分) } }
1001-36.阅读下列程序,请写出该程序的功能。 import java.applet.*; import java.awt.*;
public class Test36 extends java.applet.Applet implements Runnable{
Thread myThread = null; double seta=0.0; public void start() { setSize(500,400);
if(myThread=null){ myThread=new Thread(this); myThread.start();} }
public void run() {
while(myThread!=null) { try {myThread.sleep(40); } catch(InterruptedException e){}
seta+=3.0; if(seta>=360)seta=0; repaint(); } }
public void paint(Graphics g) {
final double pi=3.14159; final double r = 100.0; int x0=250+(int)(r*Math.cos(3.1415926/180.0*seta)); int y0=200+(int)(r*Math.sin(3.1415926/180.0*seta)); g.setColor(Color.red); g.drawOval(x0,y0,10,10); }
con.setLayout(new GridLayout(3,2));
this.setLocation(100, 100); this.setSize(400, 400); panel 1 = new Panel l ();
label l = new JLabel(\改变前景颜色\ con.add(label 1 ); con. ;//add(panel1) panel 1 .box 1 .addltemListener(this); panel 1 .box 2.addItemListener(this); panel 1 .box 3.addItemListener(this); this. setVisible (true); this.pack(); } ? }
6.2 列表和组合框
简单应用:声明和创建列表、组合框
1210-16. 列表在界面中表现为列表框,是___JList___类或它的子类的对象。 1010-16.组合框(JComboBox)是______的组合。文本框和列表
1101-6.鼠标单击列表中某个选项事件的相关接口是( ) A.ListActionListener B.ListSelectionListener C.ActionListener D.SelectionListener 1110-24.请写出JComboBox对象上可能发生的两种事件类型的名字。
6.3 菜单
综合应用:设置菜单和菜单项、处理菜单和菜单项事件 6.以下关于菜单的叙述中,正确的是( )
A.菜单分三级定义,最高一级的是菜单条,菜单条中放菜单,菜单中放菜单项 B.菜单分三级定义,最高一级的是菜单,菜单中放菜单条,菜单条中放菜单项 C.菜单分两级定义,最高一级的是菜单,菜单中放菜单项
D.菜单分两级定义,最高一级的是菜单条,菜单条中放菜单项
29.以下是生成菜单项对象,以及菜单项选择事件处理方法的部分代码。要求当菜单项singingItem被选中时,在文本框text中输出“唱歌菜单项被选中!”的字样。 ??
singingItem=new________("唱歌");//生成菜单项对象 ??
public void actionPerformed(ActionEvent e){ if(e.getSource()==singingItem)
text.setText(e.________()+ "菜单项被选中!"); } 生成菜单条是用类JMenuBar的构造方法JMenuBar(),把菜单条放入JFrame窗口中用setJMenuBar()方法;生成菜单用类JMenu的构造方法
JMenu()或JMenu(String s);生成菜单项用类JMenuItem的构造方法
JMenuItem()或JMenuItem(String s)。在菜单事件中获得事件源的方法是getSource(),获得事件源文字信息的方法是getActionCommand()。
1001-29.以下是子窗口中设置一个菜单条类的定义。类的构造方法根据指定的窗口名称和菜单表设置菜单条,菜单和菜单项,当选中某个菜单项时,在文本框中显示相应菜单项被选中的信息。
class MenuWindow extends JFrame implements ActionListener { public static JTextField text;
public MenuWindow(String s,String menuList[][]) { setTitle(s);
Container con=this.getContentPane(); con.setLayout(new BorderLayout());
this.setLocation(100,100); this.setSize(300,100); JMenuBar menubar=new JMenuBar(); for(int i=0; i JMenu menu=new JMenu(menuList[i][0]); for(int j=1;j JMenultem anltem=new JMenultem(menuList[i][j]); anltem.setActionCommand(menuList[i][j]); anltem.___ ActionListener(this)_____;menu.add(anltem); } menubar.__ add(menu)________; } text=new JTextField();setJMenuBar(menubar); con.add(text,BorderLayout.SOUTH); } public void actionPerformed(ActionEvent e){ text.setText(e.getActionCommand()+″菜单项被选中! ″); } } public class Test29 extends Applet { MenuWindow window; String menuList[][]={{″体育″,″跑步″,″打蓝球″,″打乒乓″}, {″娱乐″,″唱歌″,″跳舞″}}; public void init() { window=new MenuWindow(″体育娱乐之窗″,menuList); window.setVisible(true); } } 35.阅读下列程序,请回答以下问题: (1)该程序的菜单条中共有几个菜单项? (2)单击哪个菜单项,可以打开一个对话框? (3)该对话框是强制型还是非强制型? (4)该对话框中显示的是什么内容? Import javax.swing.*;import java.awt.*; import java.awt.event.*; import java.util.*; class MyDialog extends JDialog { MyDialog(JFrame F, String s) { super(F, s, false); Date date = new Date(); String t = date.toString(); JLabel text = new JLabel(t); add(text); setSize(200,100); setVisible(true); } } public class MenuDemo extends JFrame implements ActionListener { JMenuBar menubar; JMenu action; JMenuItem show, set, quit; public MenuDemo() { menubar = new JMenuBar(); setJMenuBar(menubar); action = new JMenu(''操作''); menubar.add(action); show= new JMenuItem(''显示''), action.add(show); set = new JMenuItem(\设置\); action.add(set); action.addSeparator(); quit = new JMenuItem(\退出\); action.add(quit); show.addActionListener(this); set.addActionListener(this); quit.addActionListener(this); setSize(300,300); setVisible(true); } public void actionPerformed(ActionEvent e) { if(e.getSource() == show) {MyDialog diag = new MyDialog(this, \信息\);} else if(e.getSource()== set) { this.setTitle(\菜单演示\);} else if(e.getSource() == quit){ System.exit(0); } } public static void main(String[] args) {new MenuDemo();} } (1)3个菜单项(1分) (2)“显示”菜单项(1分) (3)非强制型对话框(1分) (4)显示当前事件(1分) 6.4 对话框 简单应用:声明和创建对话框 1010-24.在Swing中,对话框有几种?并请写出它们的主要区别。P121 1101-16.对话框的默认布局是____BorderLayOut_____。 1110-16.强制型对话框强制对话过程 ____不能中断___ ,直至对话过程结束,才让程序响应对话框以外的事件。 1210-6. 以下不是..JDialog类构造方法的是 A. JDialog( ) C. JDialog(JFrame f, String s) B. JDialog(boolean b) D. JDialog(JFrame f, String s, boolean b) 16.在构造非强制对话框时,所使用的构造方法是JDialog(f,s, ___false__),其中f为对话框所依赖的窗口,s为对话框的标题。 1001-38.请设计实现如下用于输入学号和姓名的对话框界面,其中空白格是文本框,用于输入相应的内容。 这里给出的是程序的一部分,你要编写的是类InputNoNameDialog的构造方法InputNoNameDialog(JFrame f,String s,JTextField t)。其中参数f是对话框的依赖窗口,s是对话框标题,t是依赖窗口中显示对话框输入内容的文本框。 以下是类InputNoNameDialog的程序框架。 class InputNoNameDialog extends JDialog implements ActionListener{ JLabel title;JTextField textl,text2,mainText;JButton done; InputNoNameDialog(JFrame f ,String s,JTextField t) { super(f,s,true); mainText = t;Container con = getContentPane(); title=new JLabel(s); textl=new JTextField(10); text2=new JTextField(10); con.setLayout(new GridLayout(3,2)); con.setSize(200,100); setModal(false); //请在以下位置续写其余代码 答: done=new JButton(\确定\ done.addActionListener(this); con.add(title);con.add(done); con.add(new JLabel(\学号\ con.add(new JLabel(\姓名\ setVisible(true); } public void actionPerformed(ActionEvent e) { //输入结束按确定按钮后,将对话框中输入的学号和姓名在它依赖窗口的文本框中显示。 mainText.setText(″学号:″+textl.getText()+″ 姓名:″+text2.getText()); setVisible(false);dispose(); } } 6.5 滚动条 简单应用:声明和创建滚动条 1404-1 6.一个水平滚动条对象的初始值是1 50,滑块的宽是8个像素,表示的范围是[0,300]。 创建这样的滚动条对象时,提供的最后2个参数依次是______。0,300 35.阅读以下程序,请写出该程序的功能。 import javax.swing.*; import java.awt.*;import java.awt.event.*; class MyScrollBar extends JscrollBar{ public MyScrollBar(int init, int len, int low, int high){ super(JScrollBar. HORIZONTAL, init,len,low,high); } } class MyWindow extends JFrame implements AdjustmentListener{ private JTextField text; MyWindow(String s){ 滑动滚动条的滑块,super(s); 在文本框显示块位MyScrollBar myBar=new MyScrollBar(10,10,0,255); Container con=this. getContentPane(); 置对应的数值 con. setLayout(new GridLayout(2,1)); this. setSize(200,100); this. setLocation(100,100); myBar.addAdjustmentListener(this); text=new JTextField("",20); con. add(text);con.add(myBar); this.setVisible(true); } public void adjustmentValueChanged(AdjustmentEvent e){ MyScrollBar myBar=(MyScrollBar)e.getAdjustable(); text.setText(""+myBar.getValue()); } } public class Class1{ public static void main(String[]args){ MyWindow myWindow=new MyWindow("text5_4"); } } 1010-35.阅读下列程序,请写出该程序的功能。 import javax.swing.*; import java.awt.*; import java.awt.event.*; class MyScrollBar extends JScrollBar { public MyScrollBar(int init, int len, int low, int high){ super(JScrollBar.HORIZONTAL, init, len, low, high); } public Dimension getPreferredSize(){ return new Dimension(125, 20); } } class MyWindow extends JFrame implements AdjustmentListener{ private JTextField text; MyWindow(String s){ super(s); MyScrollBar tempBar = new MyScrollBar(l0, 10, 0, 255); Container con = this.getContentPane(); con.setLayout(new GridLayout(2,1)); this.setSize(250, 100); this.setLocation(100, 100); tempBar.addA djustmentListener(this); text= new JTextField(\移动滚动条的滑块\ con.add(text); con.add(tempBar); this.setVisible(true); this.pack(); } public void adjustmentValueChanged(AdjustmentEvent e){ MyScrollBar myBar=(MyScrO11Bar)e.getAdjustable(); text.setText(\选择的值是:\; } } public class Test35 { public static void main(String[] args) { new MyWindow(\滚动条示意程序\} 1001-16.一个水平滚动条对象的初始值是50,滑块的宽是10个像素,表示的范围是[0,250]。 创建这样的滚动条对象时,提供的5个参数依次是__________。(P125)JScrollBar.HORIZONTAL,50,10,0,250 23.请写出将文本区text放置于滚动面板jsp,并将滚动面板jsp添加到JFrame窗口myFrame的Java语句。 TextArea text=new TextArea(); JScrollPane jsp=new JScrollPane(text); myFrame.getContentPane().add(jsp); 6.6 鼠标事件 识记:鼠标事件类型、处理接口、处理方法 1404-6.MouseMotionListener接口能处理的鼠标事件是 A.按下鼠标键 B.鼠标点击C.鼠标进入 D.鼠标移动 6.用于判定鼠标右键操作的常量是 A.BUTTON1_MASKB.BUTTON2_MASKC.BUTTON3_MASK D.BUTTON4_MASK 1201-16.注册鼠标点击事件监视器的方法是 addMouseListener(监视器) 。 16.Java语言为处理鼠标事件提供两个接口:_________接口和MouseMotionListener接口。 MouseListener 6.MouseListener接口不能处理的鼠标事件是 ( D ) ..A.按下鼠标左键 C.鼠标进入 B.点击鼠标右键 D.鼠标移动 1010-6.在以下供选择的方法中,属于接口MouseMotionListener的方法是( ) A.mouseReleased() C.mouseExited() B.mouseEntered() D.mouseMoved() 1110-6.在以下选项中,属于MouseListener接口的方法是 ( ) A.mouseDoubleClicked(MouseEvent) C.mouseMoved(MouseEvent) B.mouseDragged(MouseEvent) D.mousePressed(MouseEvent) 28.以下小应用程序能响应鼠标按动的事件,当鼠标在正文区的某个位置被点击时,就在该位置显示一个记号“×”,程序限制最多保留最新20个位置。 import java.applet.*; import java.awt.*; import javax.swing.*; import java.awt.event.*; class MyPanel extends JPanel { public void print(Graphics g, int x, int y)( g.setColor(Color.red); g.drawLine(x-5, y-5, x+5, y+5); g.drawLine(x+5, y-5, x-5, y+5); } } class MyWindow extends JFrame implements MouseListener{ final int MaxMarks = 20; int currentMarks = 0, markCount = 0; Point marks[] = new Point[MaxMarks]; MyPanel panel; MyWindow(){ this.setLocation(100, 100); this.setSize(300, 300); Container con = this.getContentPane(); panel = new MyPanel(); con.add(panel); _________(this); addMouseListener this.setVisible(true); } public void paint(Graphics g){ int i; g.clearRect(0,0, this.getWidth(), this.getHeight()); for(i =0;i < markCount; i++) { _________(g, marks[i].x, marks[i].y); panel .print //注意上下文 } } public void mousePressed(MouseEvent e){ } public void mouseReleased(MouseEvent e){ } public void mouseEntered(MouseEvent e){ } public void mouseExited(MouseEvent e){ } public void mouseClicked(MouseEvent e){ marks[currentMarks] = new Point(e.getX(), e.getY()); if(markCount < MaxMarks)markCount++; currentMarks = (currentMarks+ 1)%MaxMarks; repaint(); } } public class Class1 extends Applet { public void init(){ MyWindow myWndow = new MyWindow(); } } 1001-28.以下程序创建了一个窗口,然后在窗口内显示″Hello,World! ″。 import javax.swing.*; import java.awt*; public class HelloWorld { public static void main(String[ ]ares) { TextFrame frame=new TextFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame. ____ setVisable(true)____; } } class TextFrame extends JFrame { public TextFrame() { . setTitle(″HelloWorld″); setSize(WIDTH,HEIGHT); TextPanel panel=new TextPanel(); Container contentPane=getContentPane(); contentPane.add(panel); } public static final int WIDTH=300; public static final int HEIGHT= 200; } class TextPanel extends JPanel { public void paintComponent(Graphics g) { super. ___ paintComponent(g)_____; g.drawString(″Hello,World! ″,x,y); } public int x=100; public int y=100; } 6.7 键盘事件 简单应用:键盘事件处理方法 1001-35.阅读下列程序,请写出该程序的功能。 import java.applet.*:import java.awt.event.*;import javax.swing.* public class Class 1 extends Applet implements KeyListener{ JButton button=new JButton(″开始″); JTextArea text=new JTextArea(5,20); public void init() { button.addKeyListener(this); add(button);add(text); } public void keyPressed(KeyEvent e){ int t=e.getKeyCode(); if(t>=KeyEvent.VK_A&& t<=KeyEvent.VK_Z) { text.append(″ ″+(char)t); } } public void keyTyped(KeyEvent e){} public void keyReleased(KeyEvent e){} } 答:程序功能:从键盘输入字符如果是大写字母A-Z,则显示在文本区中 16.处理键盘事件的Java程序,要实现的接口是______。KeyListener 百度搜索“70edu”或“70教育网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,70教育网,提供经典综合文库047471604Java语言程序设计(一)在线全文阅读。
相关推荐: