首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
下面Applet程序,其功能是实现一个计数器,每隔0.15秒计数器数值加1,数值动态变化,并且能够控制计数器的暂停和继续。要求通过使用swing的构件建立图形用户界面,主要包括一个文本区域,用于显示计数器结果;两个按钮,一个使计数器暂停,一个使计数器继续工
下面Applet程序,其功能是实现一个计数器,每隔0.15秒计数器数值加1,数值动态变化,并且能够控制计数器的暂停和继续。要求通过使用swing的构件建立图形用户界面,主要包括一个文本区域,用于显示计数器结果;两个按钮,一个使计数器暂停,一个使计数器继续工
admin
2009-01-15
111
问题
下面Applet程序,其功能是实现一个计数器,每隔0.15秒计数器数值加1,数值动态变化,并且能够控制计数器的暂停和继续。要求通过使用swing的构件建立图形用户界面,主要包括一个文本区域,用于显示计数器结果;两个按钮,一个使计数器暂停,一个使计数器继续工作。请改正程序中的错误(有下划线的语句),使程序能输出正确的结果。
注意:不改动程序的结构,不得增行或删行。
程序运行结果如下:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
/*
<applet code="ex7_3.class" width=800 height=400 >
</applet>
*/
public class ex7_3 extends JApplet {
private JTextField jtf = new JTextField(15);
private JButton Hold = new JButton("Hold"),resume = new JButton("Resume");
private ex7_3th obj7_3th = new ex7_3th();
class ex7_3th extends Thread {
private int cnt = 0;
private boolean bIsHold = false;
public ex7_3th() { start(); }
public void hold() {
bIsHold = true;
}
public synchronized void fauxResume() {
bIsHold = false;
wait();
}
public void run() {
while (true) {
try {
sleep(150);
synchronized(this) {
while (bIsHold)
not i fy ( );
}
} catch(InterruptedException ie) {
System.err.println("Interrupted");
}
jtf.setText(cnt);
}
}
public void init() {
Container cp = getContentPane();
cp.setLayout(new FlowLayout());
cp.add(jtf);
Hold.addActionListener(
new ActionListener() {
public void actionPerformed(ActionEvent ae) {
obj7_3th.hold();
}
});
cp.add(Hold);
resume.addActionListener(
new ActionListener() {
public void actionPerformed(ActionEvent e){
obj7_3th.fauxResume();
}
});
cp.add(resume);
public static void main(String[] args) {
ex7_3 obj7_3=new ex7_3();
String str= obi7_3.getClass().toString();
if(str.indexOf("class") != -1)
str= str.substring(6);
JFrame frm = new JFrame(str);
frm.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent we) {
System.exit(O);
}
});
frm.getContentPane().add(obj7_3);
frm.setSize(300, 200);
obj7_3.init();
obi7_3.start();
frm.setVisible(true);
}
}
ex7_3.html
<HTML>
<HEAD>
<TITLE>ex7_3</TITLE>
</HEAD>
<BODY>
<applet code="ex7_3.class"width=800 height=400>
</applet>
</BODY>
</HTML>
选项
答案
notify() wait() jtf.setText(Integer.toString(cnt++))
解析
本题主要考查图形用户界面,swing以及线程同步、共享、死锁相结合的综合应用。解题关键是熟悉wait()方法和notify()方法的含义,wait()必须被声明为synchronized,这样它才能拥有对象锁。fauxResume()把bIsHold标志设为false,并调用notify(),为了唤醒synchronized子句中的wait(),所以notify()也必须被声明为synchronized,这样才能在调用notify()之前获得对象锁 (然后该对象锁才能在wait()执行时被运用)。本题中,第一和第二处,应该在bIsHold为true时调用wait(),而在fauxResume()中调用notify();第三处,需要对int类型作转换才能够作为String类型输出,并且要对计数器变量cnt做累加。
转载请注明原文地址:https://kaotiyun.com/show/JIID777K
本试题收录于:
二级Java题库NCRE全国计算机二级分类
0
二级Java
NCRE全国计算机二级
相关试题推荐
从上表可以看出,下列年份中,医院诊疗人次最多是____。卫生院接受诊疗人次在当年总诊疗人次中比率最高的年份是____。
根据《中华人民共和国合同法》的规定,在买卖合同中,除法律另有规定或当事人另有约定外,标的物的所有权转移时间为()。
某制币厂为纪念奥运会特制纪念金币若干枚,每枚售价20088.8元。其广告宣传主要内容为:(1)纪念币系纯金制造;(2)纪念币数量仅有2008枚。后经证实,该纪念币系金铜合金;纪念币数量为20000枚。为此,购买者与该
消化系统是保证人体新陈代谢正常进行的一个重要系统,是由消化管和消化腺两大部分组成,下列器官或腺体不属于消化系统的是()。
1949年后,中国积极主动地融人世界。将下列重大外交事件按时间先后顺序排列,正确的是()。①重返联合国②中美关系正常化③参加万隆会议④加入世界贸易组织
“三部曲”泛指三部内容各自独立,但又有一定联贯性的文学作品。《幻灭》、《动摇》、《追求》是()。
《全面推进依法行政实施纲要》要求,减少行政执法层次,适当下移执法重心。对与人民群众日常生活、生产直接相关的行政执法活动,其主要实施机关是()。
国际上用来综合考察居民间收人分配差异状况的一个重要分析指标是()。
研究发现,蓝毗尼地区的有机碳、元素碳、左旋葡聚糖、半乳聚糖、甘露聚糖、对羟基苯甲酸、香草酸、丁香酸和脱氢松香酸均在秋季呈现出高值而夏季最低。该地区的左旋葡聚糖含量与南亚受生物质燃烧影响严重地区的浓度水平相当,说明生物质燃烧对蓝毗尼地区的大气环境产生了重要影
下列不合法的用户标识符是()。
随机试题
对药品检验工作的基本程序叙述错误的是
下列说法正确的是:
在河道狭窄的重要堤段,常采用()。
投资品种的研究、投资组合的制定和决策以及交易指令的执行应当相互分离并由不同人员负责。( )
在我国,领导者选拔任用的方式主要有()。
由地方政府和地方政府机构所发行的债券是:()。
下列关于房产税纳税人的说法中,错误的是()。
[*]
设随机变最X~N(0,σ2),Y~N(0,4σ2),且P(X≤1,Y≤-2)=1/4,则P(X>1,Y>-2)=________.
Whichwouldyouratherbe,amathematicianoranauthor?Perhapsyouwillneverbefacedwiththiskindofchoice.LewisCarroll
最新回复
(
0
)