![[问答题] 下面程序是一个计时器,从1000秒开始倒计时,直到为0结束。在界面上有两个按钮,一个可以暂停计时,另一个可以继续已经暂停的计时。请更正题中带下划线的部分。注意:不改动程序的结构,不得增,第1张 [问答题] 下面程序是一个计时器,从1000秒开始倒计时,直到为0结束。在界面上有两个按钮,一个可以暂停计时,另一个可以继续已经暂停的计时。请更正题中带下划线的部分。注意:不改动程序的结构,不得增,第1张](/aiimages/%5B%E9%97%AE%E7%AD%94%E9%A2%98%5D+%E4%B8%8B%E9%9D%A2%E7%A8%8B%E5%BA%8F%E6%98%AF%E4%B8%80%E4%B8%AA%E8%AE%A1%E6%97%B6%E5%99%A8%EF%BC%8C%E4%BB%8E1000%E7%A7%92%E5%BC%80%E5%A7%8B%E5%80%92%E8%AE%A1%E6%97%B6%EF%BC%8C%E7%9B%B4%E5%88%B0%E4%B8%BA0%E7%BB%93%E6%9D%9F%E3%80%82%E5%9C%A8%E7%95%8C%E9%9D%A2%E4%B8%8A%E6%9C%89%E4%B8%A4%E4%B8%AA%E6%8C%89%E9%92%AE%EF%BC%8C%E4%B8%80%E4%B8%AA%E5%8F%AF%E4%BB%A5%E6%9A%82%E5%81%9C%E8%AE%A1%E6%97%B6%EF%BC%8C%E5%8F%A6%E4%B8%80%E4%B8%AA%E5%8F%AF%E4%BB%A5%E7%BB%A7%E7%BB%AD%E5%B7%B2%E7%BB%8F%E6%9A%82%E5%81%9C%E7%9A%84%E8%AE%A1%E6%97%B6%E3%80%82%E8%AF%B7%E6%9B%B4%E6%AD%A3%E9%A2%98%E4%B8%AD%E5%B8%A6%E4%B8%8B%E5%88%92%E7%BA%BF%E7%9A%84%E9%83%A8%E5%88%86%E3%80%82%E6%B3%A8%E6%84%8F%EF%BC%9A%E4%B8%8D%E6%94%B9%E5%8A%A8%E7%A8%8B%E5%BA%8F%E7%9A%84%E7%BB%93%E6%9E%84%EF%BC%8C%E4%B8%8D%E5%BE%97%E5%A2%9E.png)
[问答题] 下面程序是一个计时器,从1000秒开始倒计时,直到为0结束。在界面上有两个按钮,一个可以暂停计时,另一个可以继续已经暂停的计时。请更正题中带下划线的部分。
注意:不改动程序的结构,不得增行或删行
import java.awt.*;
import java.awt.event.*;
import java.applet.Applet;
public class Example3_4 extends Applet
public Color color = Color.red;
private int num= 1000;
public Counter theCounter;
private Button stop;
private Button start;
public void init()
stop = new Button("暂停");start = new Button ("继续");
theCounter = new Counter(this);
stop.addActionListener(new Lst() implements ActionListener
public void actionPerformed(ActionEvent e)
theCounter.sus();
);
start.addActionListener(new SuspenListener());
add(start);
add(stop);
theCounter.start();
public vo 正确答案:①stop.addActionListener(new ActionListener(){②class Counter extends Thread③synchronized(this)
参考解析:本程序使用线程类“Counter”来实现计时的功能,该线程的线程体每1000毫秒循环一次,并在每次循环的开始显示剩余的时间。计时器的暂停和继续通过线程的同步与共享来完成,每次循环结束时,判断标志暂停的变量“isHold”是否为真,如果为真则进入挂起状态。当用户按下“暂停”按钮,程序调用Counter类的sus()方法,将变量“isHold”设为真。当用户按下“继续”按钮,程序调用Counter类的conti()方法,将变量“isHold”设为假,并使用notify()取消线程的挂起状态。本题第1个错误是考查对匿名类的使用。匿名类是Java语言中比较特殊的一种类,这种类不存在类名,而且只能在声明的时候被实例化一次。匿名类必须继承于一个父类或实现一个接口。第1条横线处,原程序打算声明一个新类 Lst实现ActionListener接口,并同时实例化一个新对象。但是只有匿名类才能在声明时创建一个新的类对象。因此此处应改用匿名类实现程序的目的。第2个错误处考查Java源程序的结构。任何一个“java”文件中有且只有一个被声明为public的类,这个类的名字必须与“java”文件的文件名相同。因此在第2个错误位置处必须去掉 public声明。synchronized用来定义一个同步块。synchronized的定义格式是synchronized (expression)statement,expression是对象或类的名字,系统将为该对象设置唯一的锁;statement可以是一个方法定义,也可以是一个语句块,在同一时刻只能有一个线程执行这个块中的 *** 作。因此第3个错误处必须指明同步的对象,本题中的同步对象是当前的Counter实例。运行结果如下图所示。 [*]
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)