currentMarks=(currentMarks+1)%MaxMarks;
repaint();
}
}
publicclassClass1extendsApplet{
publicvoidinit(){
MyWindowmyWndow=newMyWindow();
}
}
29.这是一个处理选择项目事件的子窗口类。
窗口中有2个选择框,当选中某个选择框时,文本框将显示选择框对应的信息。
classMyWindowextendsJFrameimplementsItemListener{
JTextFieldtext;
JCheckBoxboxl,box2;
MyWindow(Strings){
_________;
Containercon=this.getContentPane();
this.setLocation(100,100);this.setSize(400,200);
text=newJTextField(10);
box1=newJCheckBox("A计算机",false);
box2=newJCheckBox("B计算机",false);
con.setLayout(newGridLayout(3,2));
con.add(newJLabel("计算机产品介绍",JLabel.CENTER));
add(newJLabel("计算机2选1",JLabel.CENTER));
con.add(box1);con.add(box2);con.add(text);
box1.addItemListener(this);
box2.addItemListener(this);
this.setVisible(true);this.pack();
}
publicvoiditemStateChanged(_________e){
if(e.getItemSelectable()==box1){
text.setText("A公司生产");
}elseif(e.getItemSelectable()==box2){
text.setText("B公司生产");
}
}
}
30.这是一个播放幻灯片的小应用程序中的paint()方法。
设幻灯片已由小应用程序的init()方法装入内存,并存放于myImage数组中,幻灯片的张数放于变量num中,paint()方法要播放的幻灯片号是currentImage。
intcurrentImage=0;
finalintnum=30;
Image[]myImage=new_________[num];
……
publicvoidpaint(Graphicsg){
if((mylmage[currentImage])!
=null)
g._________(myImage[currentImage],10,10,
myImage[currentImage].getWidth(this),
myImage[currentImage].getHeight(this),this);
}
31.以下定义的类ShareData用于管理多个线程共享数据val。
为了保证对共享数据val修改的完整性,线程对val的操作需要互斥,类ShareData中定义的方法modiData()就是供共享val的线程修改val的方法。
程序共有20个线程共享val,有些减少val,有些增加val。
publicclassClass1{
publicstaticvoidmain(Stringargs[]){
ShareDatamrc=newShareData(50);
Thread[]aThreadArray=newThread[20];
System.out.println("\t刚开始的值是:
"+mrc.getVal());
System.out.println("\t多个线程正在工作,请稍等!
");
for(inti=0;i<20;i++){
intd=i%2==0?
50:
-30;
aThreadArray[i]=newThread(newMyMultiThreadClass(mrc,d));
aThreadArray[i].start();
}
WhileLoop:
//等待所有线程结束
while(true){
for(inti=0;i<20;i++)
if(aThreadArray[i]._________())continueWhileLoop;
break;
}
System.out.println("\t最后的结果是:
"+mrc.getVal());
}
}
classMyMultiThreadClassimplementsRunnable{
ShareDataUseInteger;intdelta;
MyMultiThreadClass(ShareDatamrc,intd){
UseInteger=mrc;delta=d;
}
publicvoidrun(){
for(inti=0;i<1000;i++){
UseInteger.modiData(delta);
try{Thread.sleep(10);//做一些其他的处理
}catch(InterruptedExceptione){}
}
}
}
classShareData{
intval;
ShareData(intinitValue){val=initValue;}
intgetVal(){returnval;}
privatevoidputVal(intv){val=v;}
_________voidmodiData(intd){
putVal(getVal()+d);
}
}
五、程序分析题(本大题共5小题,每小题4分,共20分)
32.阅读下列程序,请写出该程序的输出结果。
classA{
intx,y;
A(inta,intb){
x=a;y=b;
}
}
publicclasssample{
publicstaticvoidmain(Stringargs[]){
Apl,p2;
p2=newA(12,15);
p1=p2;p2.x++;
System.out.println("p1.x="+p1.x);
}
}
33.阅读下列程序,请写出调用pascal(4)的输出结果。
staticvoidpascal(intn){
intpas[];
pas=newint[n];
pas[0]=1;
System.out.println(pas[0]);
for(inti=2;i<=n;i++){
/*由存储在pas中的原来内容生成新内容*/
pas[i-l]=1;
for(intj=i-2;j>0;j--)
pas[j]=pas[j]+pas[j-1];
for(intj=0;j
System.out.print(pas[j]+"");
System.out.println();
}
}
34.阅读下列程序,请用示意图画出程序运行时呈现的界面。
importjava.applet.*;
importjava.awt*;
importjavax.swing.*;
classMyPanelextendsJPanel{
JButtonbutton;JLabellabel;
MyPanel(Strings1,Strings2){
this.setLayout(newGridLayout(2,2));
button=newJButton(s1);
label=newJLabel(s2,JLabel.CENTER);
add(button);add(label);add(newJLabel());
}
}
publicclassClass1{
publicstaticvoidmain(Stringargs[]){
JFramemw=newJFrame("一个示意窗口");
mw.setSize(400,250);
Containercon=mw.getContentPane();
con.setLayout(newBorderLayout());
MyPanelpanel1,panel2;
panel1=newMyPanel("按钮1","标签1");
panel2=newMyPanel("按钮2","标签2");
JButtonbutton=newJButton("开始按钮");
con.add(panel1,"North");con.add(panel2,"South");
con.add(button,"Center");
mw.setVisible(true);
}
}
35.阅读下列程序,请回答以下问题:
(1)程序要求在文本框text中输入的内容是什么?
(2)辅助文本区showArea组件的作用是什么?
(3)如何使程序开始下载网络文本文件?
(4)程序采用什么输入方式下载网络文件?
import.*;importjava.awt.*;
importjava.awt.event.*;import,java.io.*;importjavax.swing.*;
publicclassClass1{
publicstaticvoidmain(Stringargs[]).
{newConnectNet("读取网络文本文件示意程序");}
}
classConnectNetextendsJFrameimplementsActionListener{
JTextFieldtext=newJTextField(30);
JTextAreashowArea=newJTextArea();
JButtonb=newJButton("下载");JPanelp=newJPanel();
ConnectNet(Strings){
super(s);Containercon=this.getContentPane();
p.add(text);p.add(b);
JScrollPanejsp=newJScrollPane(showArea);
b.addActionListener(this);
con.add(p,"North");con.add(jsp,"Center");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(500,400);setVisible(true);
}
publicvoidactionPerformed(ActionEvente){
StringurlName=text.getText();
try{URLurl=newURL(urlName);//由网址创建URL对象
URLConnectiontc=url.openConnection();//获得URLConnection对象
tc.connect();//设置网络连接
InputStreamReaderin=newInputStreamReader(tc.getInputStream());
BufferedReaderdis=newBufferedReader(in);StringinLine;
while((inLine=dis.readLine())!
=null){showArea.append(inLine+"\n");}
dis.close();
}catch(MalformedURLExceptione2){e2.printStackTrace();}
catch(IOExceptione3){e3.printStackTrace();}
}
}
36..阅读下列程序,请写出该程序的功能。
importjava.applet.*;importjava.awt.*;
publicclassClass1extendsjava.applet.AppletimplementsRunnable{
ThreadmyThread=null;
publicvoidstart(){
setSize(500,400);
if(myThread==null){
myThread=newThread(th