首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
下面是一个Applet程序,其功能是实现一个计数器,每隔0.15秒计数器数值加1,数值动态变化,并且能够控制计数器的暂停和继续。要求通过使用Swing的构件建立图形用户界面。主要包括一个文本区域,用于显示计数器结果:两个按钮,一个使计数器暂停,一个使计数器
下面是一个Applet程序,其功能是实现一个计数器,每隔0.15秒计数器数值加1,数值动态变化,并且能够控制计数器的暂停和继续。要求通过使用Swing的构件建立图形用户界面。主要包括一个文本区域,用于显示计数器结果:两个按钮,一个使计数器暂停,一个使计数器
admin
2009-01-15
41
问题
下面是一个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全国计算机二级
相关试题推荐
下列关于项目及项目中文件的叙述,不正确的是()。
结构化程序设计的3种结构是()。
(1)将order_detaill表中的全部记录追加到order-detail表中,然后用SQLSELECT语句完成查询:列出所有订购单的“订单号”、“订购日期”、“器件号”、“器件名”和“总金额”(按“订单号”升序,“订单号”相同再按“总金额”降序
建立一个文件名和表单名均为myform的表单文件,表单上有:表格控件gridl(RecordS.ourceType属性手工设置为“别名”),文本框控件Textl,命令按钮控件Commandl(文本为“确定”)。程序运行时在文本框中输入“部门名”,然后单击
在考生文件夹下完成下列操作:(1)使用SQL命令根据“教师”表产生一个结构和数据完全一致的“高校教师”表,并按职工号递增排序。(2)使用报表向导为“教师”表创建一个名为two的报表,选择“教师”表的所有字段,按“职工号”降序排列,标题为“教师情况报表”
(1)用SQL语句进行以下查询:查询“外汇账户”表中的日元信息。查询结果包括钞汇标志、金额,结果按金额降序排序,并存储于表two.dbf中,并将SQL语句存储于新建的three.txt文件中。(2)用一对多报表向导建立报表,“外汇代码”表为父表,“外汇账
负责数据库中查询操作的数据库语言是
设数据库表中有一个C型字段NAME。打开表文件后,要把内存变量NAME的字符串内容输入到当前记录的NAME字段,应当使用命令
在考生文件夹下创建一个顶层表单myform.scx(表单的标题为“考试”),然后创建并在表单中添加菜单(菜单的名称为mymenu.mnx,菜单程序的名称为mymenu.mpr)。效果如图3.8所示。(1)菜单命令“统计”和“退出"的功能都通过执行过程完成
下列程序在Frame中设定BorderLayout布局管理器,选择正确的语句填入程序的横线处。importjava.awt.*;publicclassex43extendsFrame{publicst
随机试题
资料:某企业2008年6月发生的部分经济业务如下:(1)购入不需要安装的设备一台,买价28000元,包装费1200元,运杂费800元,全部款项已用银行存款支付。(2)计提本月固定资产折旧费20000元,其中,车间14000元,行政管理部门6000元。
颅脑损伤病人病情观察,哪像最重要?()
动脉血流供应中断,导致局部组织细胞缺血坏死称为
3岁小儿的平均身长是
屋面柔性防水层应设保护层,对保护层的规定中,下列哪一条是不恰当的?[2004年第082题]
下列属于期货从业人员不正当竞争行为的是( )。
根据行政许可法的规定,有关行政许可的设定机关对其设定的行政许可进行评价的判断中,正确的是()。
下列朝代中,定都南京的朝代有()。
SowhyisGooglesuddenlysointerestedinrobots?That’sthequestioneveryone’saskingafteritemergedthismonththatthein
面条儿很好吃师傅做的这位
最新回复
(
0
)