首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
下面是一个Applet程序,其功能是实现一个计数器,每隔0.15秒计数器数值加1,数值动态变化,并且能够控制计数器的暂停和继续。要求通过使用Swing的构件建立图形用户界面。主要包括一个文本区域,用于显示计数器结果:两个按钮,一个使计数器暂停,一个使计数器
下面是一个Applet程序,其功能是实现一个计数器,每隔0.15秒计数器数值加1,数值动态变化,并且能够控制计数器的暂停和继续。要求通过使用Swing的构件建立图形用户界面。主要包括一个文本区域,用于显示计数器结果:两个按钮,一个使计数器暂停,一个使计数器
admin
2009-01-15
36
问题
下面是一个Applet程序,其功能是实现一个计数器,每隔0.15秒计数器数值加1,数值动态变化,并且能够控制计数器的暂停和继续。要求通过使用Swing的构件建立图形用户界面。主要包括一个文本区域,用于显示计数器结果:两个按钮,一个使计数器暂停,一个使计数器继续工作。请改正程序中的错误(有下划线的语句),使程序能输出正确的结果。
注意:不改动程序的结构,不得增行或删行。
源程序文件代码清单如下。
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
/*
<applet code="ex19_3.class" width=800 height=400>
</applet>
*/
public class ex19_3 extends JApplet
{
private JTextField jtf=new JTextField(15);
private JButton Hold=new JButton("Hold");
private JButton resume=new JButton("Resume");
private ex19_3th obj19_3th=new ex19_3th();
class ex19_3th extends Thread
{
private int cnt=0;
private boolean bIsHold=false;
public ex19_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)
notify();
}
}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)
{
obj19_3th.hold ( );
}
});
cp.add(Hold);
resume.addActionListener
(
new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
obj19_3th.fauxResume();
}
});
cp.add(resume);
}
public static void main(String args[])
{
ex19_3 obj19_3=new ex19_3();
String str= obj19_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(0);
}
});
frm.getContentPane().add(obj19_3);
frm.setSize(300, 200);
obj19_3.init();
obj19_3.start{);
frm.setVisible(true);
}
}
ex19_3.html
<HTML>
<HEAD>
<TITLE>ex19_3</TITLE>
</HEAD>
<BODY>
<applet code="ex19_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()执行时被运用。本题中,第1和第2处,应该在bIsHold为true时调用wait(),而在 fauxResume()中调用notify();第3处,需要对 int类型做转换才能够作为String类型输出,并且要对计数器变量cnt做累加。程序运行结果如下。
转载请注明原文地址:https://kaotiyun.com/show/SJnp777K
本试题收录于:
二级Java题库NCRE全国计算机二级分类
0
二级Java
NCRE全国计算机二级
相关试题推荐
插入一条记录到“评分”表中,歌手号、分数和评委号分别是“1001”、9.9和“105”,正确的SQL语句是()。
在考生文件夹下完成如下操作:(1)新建一个名为sdb的数据库文件,然后将client表添加到数据库中。(2)使用SQLUPDATE语句将client表中客户号为“061009”的客户的性别改为“男”。然后将该语句保存在命令文件sone.prg中。(3
在考生文件夹下完成下列操作:(1)用命令新建一个名为“外汇”的数据库,并将该命令存储于one.txt中。(2)将自由表“外汇汇率”、“外汇账户”、“外汇代码”加入到新建的“外汇”数据库中。(3)用SQL语句在“外汇”数据库中新建一个数据库表rate,
创建一个名为student的新类,保存新类的类库名称是mylib,新类的父类是Person,正确的命令是
下列程序段执行以后,内存变量A和B的值是CLEARA=10B=20SETUDFPARMSTOREFERENCEDOSQWITH(A),(B)&&参数A是值传递,B是值传递?A,BPROCEDURESQPARAMETERSX1,
用DIMENSION命令定义数组后,数组各元素的值是
下列关于接收参数和传送参数的说法中,正确的是()。
用SQL语句在“外汇”数据库中新建一个数据库表rate,其中包含4个字段“币种1代码”C(2)、“币种2代码”C(2)、“买入价”N(8,4)、“卖出价”N(8,4),请将SQL语句存储于two.txt中。
数据库应用系统中的核心问题是
随机试题
在Excel2010中,下列能够对单元格A2、D1、D2、D3、E4求和的公式有________。
发出存货实际成本的计价方法包括
A.HMG-CoA还原酶B.6-磷酸果糖激酶-1C.果糖二磷酸酶-1D.磷酸化酶糖原分解途径中的关键酶是
A.肺结核B.细支气管肺泡癌C.肺脓肿D.周围型肺癌E.肺癌(中央型)女性,60岁。咳嗽5个月,大量泡沫痰,痰中带血2个月,胸片示双肺多发性小结节影。最有可能的诊断是
与月经产生没有直接关系的脏腑是
A、青霉素GB、氯霉素C、红霉素D、克林霉素E、特比奈芬可用于治疗手、足癣的是( )。
某开发商与建筑公司达成延期付款协议,协议约定开发商最迟于2012年5月1日一次性支付全部款项,后开发商未付款,在建筑公司一再催促下,开发商在2012年8月1日仅支付了部分款项,关于建筑公司剩余工程款的诉讼时效说法正确的是()。
下列选项中,不属于幼儿园教学特点的是()。
R1、R2是一个自治系统中采用。RIP路由协议的两个相邻路由器,R1的路由表如下图(a)所示,当R1收到R2发送的如下图(b)的(V,D)报文后,R1更新的五个路由表项中距离值从上到下依次为()。
Bonfirescancauselocalizedairpollutionandannoyneighbours.Followthebonfireguidelinestoreducenuisancetoothers.
最新回复
(
0
)