Java程序設(shè)計項目教程(第二版)答案_第1頁
Java程序設(shè)計項目教程(第二版)答案_第2頁
Java程序設(shè)計項目教程(第二版)答案_第3頁
Java程序設(shè)計項目教程(第二版)答案_第4頁
Java程序設(shè)計項目教程(第二版)答案_第5頁
已閱讀5頁,還剩81頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

Java程序設(shè)計項目教程(第二版)-參考答案

項目1

一、思考題

1.Java程序有幾種版本,分別是什么?

Java有三種版本,分別是J2ME、J2SE、J2EE

2.Java程序有何特點?

Java語言的特點如下:

①面向?qū)ο螅褐С执a繼承及重用,是完全面向?qū)ο蟮模恢С诸愃艭

語言那樣的面向過程的程序設(shè)“技術(shù)。

②解釋執(zhí)行:Java解釋器(運行系統(tǒng))能直接運行目標代碼指令。

③平臺無關(guān):Java源程序被編譯成一種高層次的與機器無關(guān)的Byte-codes

格式語言,被設(shè)計在Java虛擬機上運行。

④多線程:Java提供的多線程功能使得在一個程序里可同時執(zhí)行多個小任

務(wù)。多線程帶來的好處是可以有更好的交互性能和實時控制性能。

⑤健壯性:Java致力于檢查程序在編譯和運行時的錯誤,類型檢查幫助檢

查出許多開發(fā)早期出現(xiàn)的錯誤。

3.什么是JVM,為什么需要JVM?

JVM即Javn虛擬機,是一臺可以存在于不同的真實的軟、硬件環(huán)境下的虛

擬的計算機,其功能是將字節(jié)碼解釋為真實平臺能執(zhí)行的指令。Java正是通過

虛擬機JVM技術(shù),實現(xiàn)了與平臺無關(guān),實現(xiàn)“編寫一次,到處運行”。因此,

任何平臺只要安裝相應(yīng)的Java虛擬機環(huán)境,就能運行Java程序。

4.如何理解Java程序的基本結(jié)構(gòu)?

①語句packagepl;是建立一個包(文件夾),生成的類文件將存放于包

中。

②程序第一行publicclass類名{},是一個類定義語句。public關(guān)鍵字

指明類的訪問方式為公有,也就是在整個程序內(nèi)都可以訪問到它。如果將類定

義為public,則類其名稱必須與主文件名一致,并且大小寫敏感。

③類后大括號內(nèi)可以定義類的成員和方法,對于一個可執(zhí)行的Java類,

main方法是必需的,而且該main方法必須是公有(public)、靜態(tài)(static)

和沒有返回值(void)的,同時它只能帶一個字符串型(String口)的參數(shù)。

④程序的一行“〃……”是注釋,只說明不運行。

⑤每個命令語句結(jié)束,必須以“;”結(jié)尾。

二、編程

1.編寫一Java應(yīng)用程序,要求在屏幕上輸出字符串“HappyNewYear!”。

classPracl

{

publicstaticvoidmain(Stringargs[])

(

System.out.printIn("HappyNewYear!");

)

)

2.編寫一個簡單的Java程序,在屏幕上輸出如下圖形:

*

***

51c51c51c5jc

classPrac2

(

publicstaticvoidmain(Stringargs[])

{

System.out.printlnC"*");

System,out.println(,z***");

System,out.printing*****");

)

項目2

一、選擇題

1.數(shù)組中可以包含什么類型的元素?(D)

A.int型B.String型C.數(shù)組D.以上都

可以

2.Java中定義數(shù)組名為Arr,下面哪項可以得到數(shù)組元素的個數(shù)?(B)

A.Arr.length()B.Arr.lengthC.Arr(xyz)D.Arr

(xyz)

3.下面哪條語句定義了3個元素的數(shù)組?(A)

A.int[]a={20,30,40};

B.inta[]=newint(3);

C.int[3]array;

D.int[]arr;

4.下面的代碼段中,執(zhí)行之后i和j的值是(B)。

inti=10;

intj;

j=i++;

A.10,10B.11,10C.10,11D.11,11

二、編程

1.試編寫一個程序,輸入三條邊長值,并判斷這三條邊長能不能構(gòu)成三角

形,如果能,能構(gòu)成什么樣的三角形(一般、等邊、等腰)C

importjava.util.*;

classPracticel{

publicstaticvoidmain(Stringargs[])

Scanners=newScanner(System,in);

inta,b,c;

a=s.nextlnt();

b=s.nextlnt();

c=s.nextlnt();

if(a+b>c&&a+c>b&&b+c>a)

if(a==b&&a==c)

System.out.print("構(gòu)成的三角形為等邊三角形?!?;

elseif(a==b||a==c||b==c)

System.out.print(〃構(gòu)成的三角形為等腰三角形?!?;

else

System.out.print(〃構(gòu)成的三角形為一般三角形。〃);

)

else

System.out.print(〃不能構(gòu)成三角形?!?;

)

)

2.試編寫一個程序,讀入10個學(xué)生的成績,成績在0?59分為D,成績在

60?79分為C,成績在80?89分為B,成績在90?100分為A,并輸出A、B、C、

D的人數(shù)個數(shù)。

importjava.util.

puhlinclassPractICP2{

publicstaticvoidmain(Stringargs[])throwslOException

(

inta=10,al=0,a2=0,a3=0,a4=0,c;

intnuma[]=newint[a];

for(inti=0;i<a;i++){

System.out.print(〃請輸入第〃+(i+l)+〃個人的成績〃);

c=getInputData();

while(c<0||c>100)

{

System.out.print("請重新輸入第"+(i+l)+”個學(xué)生的成績〃);

c=getInputData();

)

nunia[i]=c;〃保存

System,out.printIn(nunia[i]);

switch(numa[i]/10)(

case10:

System.out.printin「成績?yōu)锳級!”);

al++;

break;

case9:

System.out.printing成績?yōu)锳級!”);

al++;

break;

case8:

System.out.printing成績?yōu)锽級!”);

a2++;

break;

case7:

System,out.printin「成績?yōu)镃級!〃);

a3++;

break;

case6:

System,out.printing成績?yōu)镃級!〃);

a3++;

break;

default:

System,out.prinlln(“成績?yōu)镈級!〃);

a4++;

break;

System,out.printin(*90-100分的人數(shù)=〃+al);

System,out.printIn(?,80-89分的人數(shù)=〃+a2);

System,out.printIn(〃60-79分的人數(shù)=〃+a3);

System.out.printIn(z,0-59分的人數(shù)=〃+a4);

}

publicstaticintgetlnputDataOthrowslOExccption

Scanners=newScanner(System,in);

intn=s.nextlnt();

returnn;

3.試編寫一個程序,輸出以下形式的圖形。

classPractice3

(

publicstaticvoidmain(Stringargs口)

(

for(inti=l:i<=4:i++)

{

for(intj=l;j〈=i;j++)

System,out.print(*");

for(intk=l;k<=5;k++)

System.out.print("*");

System,out.printlnO;

)

)

}

4.試編寫游戲程序,完成猜數(shù)字游戲,數(shù)字是由計算機隨機產(chǎn)生的100以

內(nèi)整數(shù)。一次就猜中得100分,2次才猜中得90分,依次類推,超過10次無分。

程序最后輸出參與者得分。

importjava.util.*;

classPractice4

(

publicstaticvoidmain(Stringargs[])

(

inta=(int)(Math,random。*⑼;

intguess,score=100;

Scanners=newScanner(System,in);

inti:

for(i=l;i<=10;i++)

(

guess=s.nextlnt();

if(guess==a)

break;

score=score-10;

)

System.out.print(i+”得分為:*+score);

)

}

項目3

一、選擇題

1.定義類頭(非內(nèi)部類)時,不可能用到的關(guān)鍵字是(B)

A)classB)privateC)extendsD)public

2.下列類頭定義中,錯誤的是(A)

A)publicxextendsy{...}B)publicclassxextendsy

{...)

C)classxextendsyimplementsyl{...}D)classx{...}

3.設(shè)A為已定義的類名,下列聲明A類的對象a的語句中正確的是(D)

A)floatAa;B)publicAa=A();

C)Aa=newint();D)staticAa=newA();

4.設(shè)X、Y均為已定義的類名,下列聲明類X的對象xl的語句中正確的

是(C)

A)publicXxl=newY();B)Xxl=X();

C)Xxl=newX();D)intXxl;

5.設(shè)X、Y為已定義的類名,下列聲明X類的對象xl的語句中正確的是

(A)

A)staticXxl;B)publicXxl=newX(int

123);

C)Yxl;D)Xxl=X();

6.有一個類A,以下為其構(gòu)造方法的聲明,其中正確的是(A)

A)publicA(intx){...}B)staticA(intx){...}

C)publica(intx){...}D)voidA(intx){...}

7.有一個類Student,以下為其構(gòu)造方法的聲明,其中正確的是(B)

A)voidStudent(intx){...}B)Student(intx){...}

C)s(intx){...}D)voids(intx){...}

8.下列選項中,用于定義接口的關(guān)鍵字是(A)

A)interfaceB)implementsC)abstractD)class

9.現(xiàn)有類A和接口B,以下描述中表示類A實現(xiàn)接口B的語句是(A)

A)classAimplementsBB)classBimplementsA

C)classAextendsBD)classBextendsA

二、填空題

1.如果子類中的某個變量的變量名與它的父類中的某個變量完全一樣,則

稱子類中的這個變量了父類的同名變量。

2.如果子類中的某個方法的名字、返回值類型和參數(shù)列表與它的父

類中的某個方法完全一樣,則稱子類中的這個方法覆蓋了父類的同名方法。

3.抽象方法只有方法頭,沒有方法體一。

4.接口中所有屬性均為pu為ic、static和final

的。

5.一個類如果實現(xiàn)一個接口,那么它就必須實現(xiàn)接口中定義的所有方法,

否則該類就必須定義成的。

6.lava語言中用于表示類間繼承的關(guān)鍵字是extends。

7.下面是一個類的定義,請將其補充完整。

classStudent

(

Stringname;

intage;

Student(Strings,inti)

(

name=s;

age=i;

)

)

8.下面是一個類的定義,請將其補充完整。

class______A

{Strings;

staticinta=666;

A(Stringsi)

(

s二si;

)

staticintgeta()

returna;

三、編程題

1.編寫一個類,描述學(xué)生的學(xué)號、姓名、成績。學(xué)號用整型,成績用浮點

型,姓名用String類型。編寫一個測試類,輸入學(xué)生的學(xué)號、姓名、成績,并

顯示該學(xué)號的學(xué)生姓名,以及成績。

importjava.util.*;

classStudent{

intsNum;

Stringname;

doublescore;

|

classTl_Student{

publicstaticvoidmain(String[]args){

Scannersc=newScanner(System,in);

Students=newStudent();

s.sNum=sc.nextlnt();

s.name;sc.next();

s.score=sc.nextDoubleO;

System,out.println(s.name+”的學(xué)號是"+s.sNum+"成績是"+s.score);

)

)

2.設(shè)il^一個Birthday類,其成員變量有:year,month,day:提供構(gòu)造方

法、輸出Birthday對象值的方法和計算年齡的方法。編寫程序測試這個類。

classBirthday{

privateintyear;

privateintmonth;

privateintday;

publicBirthday(intyear,intmonth,intday)

{this.year=year;

this.month=month;

this.day=day;

)

publicvoidprintBirthDay()

{System.out.println(year+"-"+month+"-"+day);

)

publicintprintAge()

{return2021-year,}

publicstaticvoidmain(String[]args)

(

Birthdaybirth=newBirthday(1991,11,5);

birth.printBirthDay();

intage=birth.printAgeO;

System,out.printIn(age);

)

)

3.編寫一個類,描述汽車,其中用字符型描述車的牌號,用浮點型描述車

的價格。編寫一個測試類,其中有一個修改價格方法,對汽車對象進行操作,

根據(jù)折扣數(shù)修改汽車的價格,最后在main方法中輸出修改過后的汽車信息。

publicclassChangeCar{

publicstaticvoidmain(StringE]args){

Carc=newCar();

c.carNum=〃魯Allll";

c.price=10;

System,out.printin("beforechange,thecar'snumandprice

is:〃+c.carNum+,z,+c.price);

changePrice(c);

System,out.printIn(z,AfterChange,thecar'sprice

is:〃+c.price);

}

publicstaticvoidchangePrice(Carc){

c.price=c.price*。.8;

classCar{

StringcarNum;

doubleprice;

}

4.編寫一個Java應(yīng)用程序,設(shè)計一個汽車類Vehicle,包含的屬性有車輪

個數(shù)wheels和車重weighu小車類Car是Vehicle的子類,其中包含的屬性

有載人數(shù)loader??ㄜ囶怲ruck是Car類的子類,其中包含的屬性有載重量

payloado每個類都有構(gòu)造方法和輸出相關(guān)數(shù)據(jù)的方法。

classVehicle

(

intwheels;

floatweight;

Vehicle(inta,floatb)

(

wheels=a;

weight=b;

voidoutDataO

System,out.print("Thevehicle,s

data:wheels:〃+whecls+〃,weight:z/+weight);

)

}

classCarextendsVehicle

(

intloader;

Car(inta,floatb,intc)

(

super(a,b);

loader=c;

)

voidoutDataO

(

super.outDataO;

System,out.printloader:?z+loader);

)

)

classTruckextendsCar

(

floatpayload;

Truck(inta,floatb,intc,floatd)

super(a,b,c);

payload'd;

)

voidoutDataO

(

super.outDataO;

System,out.printIn(z/,payload:,,+payload);

)

)

classTest

(

publicstaticvoidmain(Stringargs[])

(

Vehiclev=newVehicle(4,7);

v.outDataO;

System,out.printlnO;

Carc=newCar(4,6,4);

c.outDataO;

System.out.printlnO;

Truckt=newTruck(4,2,10,8);

t.outDataO;

}

5.定義一個接口CanFly,描述會飛的方法publicvoidfly();分別定義

類飛機和鳥,實現(xiàn)CanFly接口。定義一個測試類,測試飛機和鳥,在main方

法中創(chuàng)建飛機對象和鳥對象,讓飛機和鳥起飛。

interfaceCanFly

{

publicvoidfly();

}

classPlaneimplementsCanFly

(

publicvoidfly()

(

System.out.printin(〃飛機需借助螺旋槳飛上了天空?!?;

}

}

classBirdimplementsCanFly

{

publicvoidfly()

(

System.out.printin("鳥需借助翅膀飛上了天空?!?;

}

}

classTest

publicstaticvoidmain(Stringargs[])

(

Planep=newPlane();

Birdb=newBird();

p.fly();

b.fly();

項目4

一、選擇題

1.關(guān)于異常的定義,下列描述中最正確的一個是(D)。

A)程序編譯錯誤B)程序語法錯誤

C)程序自定義的異常事件D)程序編譯或運行時發(fā)生的異常事件

2.拋出異常時,應(yīng)該使用的子句是(A)。

A)throwB)catchC)finallyD)throws

3.自定義異常類時,可以繼承的類是(C)。

A)ErrorB)AppletC)Exception及其子類D)

AssertionError

4.當方法產(chǎn)生異常但卻無法確定該如何處理時,應(yīng)采用的方法是(C)。

A)聲明異常B)捕獲異常C)拋出異常D)自定義異常

5.對于try{…}catch子句的排列方式,正確的一項是(A)。

A)子類異常在前,父類異常在后B)父類異常在前,子類異常在后

C)只能有子類異常D)父類異常與子類異常不能同時出

現(xiàn)

6.下列關(guān)于try、catch和finally的表述,錯誤的是(C)。

A)by語句塊后必須緊跟catch語句塊B)catch語句塊必須緊跟在

語句塊后

C)可以有try但無catchD)可以有try但無finally

7.下列描述中,錯誤的一項是(A)。

A)一個程序拋出異常,其他任何運行中的程序都可以捕獲

B)算術(shù)溢出需要進行異常處理

C)在方法中檢測到錯誤但不知如何處理時,方法就聲明異常

D)任何沒有被程序捕獲的異常最終被默認處理程序處理

8.下面程序運行時,會產(chǎn)生的異常是(C)o

classTest(

publicstaticvoidmain(Stringar[])

{intx=0,y=20,z;

z=(x+y)/(x*y);

System.out.println[〃z="+z);

)

}

A)ArrayIndexOutOfBoundsExceptionB)NumberFomatException

C)ArithMeticExceptionD)NulIPointerException

二、填空題

1.一個try代碼段后必須跟catch代碼段,finally代碼

段可以沒有。

2.自定義異常類必須繼承Exception類或其子類。

3.異常處理機制可以允許根據(jù)具體的情況選擇在何處處理異常,可以在當

前方法中捕獲并處理,也可以用throws子句把它交給調(diào)用方法

去處理。

4.數(shù)組下標越界對應(yīng)的類是__ArrayIndexOutOfBoundsException_____

5.為達到高效運行的要求,一運行時產(chǎn)生—的異常,可以直接交函嬴

虛擬機系統(tǒng)來處理,而Exception類派生出的非運行異常,要求編寫程序捕

獲或者聲明。

三、編程題

1.從鍵盤輸入5個數(shù),求出5個數(shù)的階乘之和。若輸入負數(shù)時,產(chǎn)生異常

并進行相應(yīng)的處理。

importjavax.swing.*;

classExceptionExam

publicstaticvoidmain(Stringargs[])

inti,sum=0,j;

for(i=0;i<5;i++)

j=l;

int

x=Integer.parselnt(JOptionPane.showInputDialog(null,“input:'));

try

(

if(x<0)thrownewException();

for(intk=l;k<=x;k++)

sum=sum+j;

}catch(Exceptione)

{

System.out.printin("輸入了一個負數(shù),請重新輸入!〃);

i—;

)

)

System.out.println]”階乘和為:〃+sum);

)

)

2.設(shè)計自己的異常類,從鍵盤輸入一個數(shù),若輸入的數(shù)不小于0,則輸出它

的平方根。若小于0,則輸出提示信息“輸入錯誤”。(求平方根的方法

為:Math,sqrt(intx))

importjavax.swing.*;

classMyExceptionextendsException

(

staticinti=3;

MyException()

(

super(〃產(chǎn)生異常!〃);

)

)

classExceptionTest

(

publicstaticvoidmain(Stringargs[])

(

int

x=lnteger.parselnt(JOptionPane.showInputDialog(null,“input:〃));

try

(

if(x<0)thrownowMyException();

System,out.printin(〃輸入數(shù)的平方根為:〃+Math.sqrt(x));

}catch(MyExceptione)

System,out.println(e.getMessage());

System.out.printin(〃異常編號為:〃+e.i);

)

)

項目5

一、選擇題

1.下面屬于容器類的是(A)

A.JFrameB.JTextFieldC.ColorD.JMenu

2.FlowLayout的布局策略是(A)

A.按添加的順序由左至右將組件排列在容器中。

B.按設(shè)定的行數(shù)和列數(shù)以網(wǎng)格的形式排列組件。

C.將窗口劃分成五部分,在這五個區(qū)域中添加組件。

D.組件相互疊加排列在容器中。

3.BorderLayout的布局策略是(C)

A.按添加的順序由左至右將組件排列在容器中。

B.按設(shè)定的行數(shù)和列數(shù)以網(wǎng)格的形式排列組件。

C.將窗口劃分成五部分,在這五個區(qū)域中添加組件。

D.組件相互疊加排列在容器中。

4.GridLayout的布局策略是(B)

A.按添加的順序由左至右將組件排列在容器中。

B.按設(shè)定的行數(shù)和列數(shù)以網(wǎng)格的形式排列組件。

C.將窗口劃分成五部分,在這五個區(qū)域中添加組件。

D.組件相互疊加排列在容器中。

5.JFrame中內(nèi)容窗格缺省的布局管理器是(B)

A.FlowLayoutB.BorderLayoutC.GridLayoutD.CardLayout

6.監(jiān)聽事件和處理事件(B)

A.都由Listener完成B.都由相應(yīng)事件Listener處注冊的構(gòu)

件完成

C.由Listener和構(gòu)件分別完成D.由Listener和窗口分別完成

7.在下列事件處理機制中不是機制中的角色的是(A)

A.事件B.事件源C.事件接口D.事件處

理者

8.addActionListcner(this)方法中的this參數(shù)表示的意思是(B)

A.當有事件發(fā)生時,應(yīng)該使用this監(jiān)聽器B.this對象類會處理

此事件

C.this事件優(yōu)先于其他事件D.只是一種形式

9,下列關(guān)于Component的方法中,錯誤的是(A)

A.getName()用于獲得組件的名字B.getSize()用于獲得組件

的大小

C.setColor()用于設(shè)置前景顏色D.setVisible()設(shè)置組

件是否可見

10.當窗口關(guān)閉時,會觸發(fā)的事件是(C)

A.ContainerEventB.ItemEventC.WindowEvent

D.MouseEvent

二、填空題

1.AWT的用戶界面組件庫被更穩(wěn)定、通用、靈活的庫取代,該庫稱為—

swingo

2.布局管理器用于安排容器上的GUI組件。

3.設(shè)置容器布局管理器的方法是setLayoutO。

4.當釋放鼠標按鍵時,將產(chǎn)生_mouseRelease事件。

5.Java為那些聲明了多個方法的Listener接口提供了一個對應(yīng)的適配

翟_,在該類中實現(xiàn)了對應(yīng)接口的所有方法。

6.ActionEvcnt事件的監(jiān)聽接口是ActionListcner,注冊方法名是_

addActionListener(),事件處理方法名是publicvoid

actionperformed。。

7.圖形用戶界面通過事件響應(yīng)用戶和程序的交互,產(chǎn)生事件的組

件稱為事件源°

8.Java的Swing包中定義菜單的類是JMenu。

三、編程題

1.設(shè)計如圖所示樣式的圖形用戶界面(不要求實現(xiàn)功能)。

I當前時間:p一時四分眄"秒

I鬧鐘時間:I-時I―分I-秒

鬧鐘設(shè)置四三1

importjavax.swing.*;

classDemo

publicDemo()

JLabelbl=newJLabcl("當前時間:“);

JLabelb2=newJLabel("時”);

JLabelb3=newJLabel("分”);

JLabelb4=newJLabel("秒”);

JLabelb5=newJLabel("鬧鐘時間:");

JLabelb6=newJLabel("時”);

JLabelb7=newJLabel(〃分”);

JLabelb8=newJLabel(〃秒〃);

JLabelb9=newJLabel("鬧鐘設(shè)置”);

JTextFieldtl=newJTextField(*8*,3);

JTextFieldt2=newJTextField(*57*?3);

JTextFieldt3=newJTextField("59”,3);

JTextFieldt4=newJTextField(3);

JTextFieldt5=newJTextField(3);

JTextFieldt6=newJTextField(3);

JButtonbtl=ncwJ3utton("開");

JButtonbt2=newJ3utton("關(guān)");

JFramewin=newJFrame0;

win.setLayout(newFlowLayout());

win.add(bl)

win.add(tl)

win.add(b2)

win.add(t2)

win.add(b3)

win.add(t3)

win.add(b4)

win.add(b5)

win.add(t4)

win.add(b6)

win.add(t5)

win.add(b7)

win.add(t6)

win.add(b8)

win.add(b9)

win.add(btl);

win.add(bt2);

win.setSize(340,160);

win.setVisible(trje);

)

publicstaticvoidmain(Stringarg[])

newDemo();

)

}

2.編寫一個將華氏溫度轉(zhuǎn)換為攝氏溫度的程序。其中一個文本框輸入華氏

溫度,另一個文本框顯示轉(zhuǎn)換后的攝氏溫度,一個按鈕完成溫度的轉(zhuǎn)換。使用

下面的公式進行溫度轉(zhuǎn)換:攝氏溫度=5/9X(華氏溫度-32)。

importjava.awt.*;

importjava.awt.event.*;

importjavax.swing.*;

classDemoimplementsActionListener

{JLabelbl,b2;

TJextFieldtl,t2;

publicDemo()

{

bl=newJLabel("華氏溫度:〃);

b2=newJLabel("攝氏溫度:”);

tl=newJ(6);

t2=newJTextField(6);

JButtonbtl=newJ3utton("轉(zhuǎn)換”);

JFramewin=newJFrame0;

win.setLayout(newFlowLayout());

win.add(bl);

win.add(tl);

win.add(b2);

win.add(t2);

win.add(btl);

btl.addActionListener(this);

win.setSize(160,120);

win.setVisible(trje);

)

publicvoidactionPerformed(ActionEvente)

(

t2.setTextC*+5.0/9*(Float.parseFloat(tl.getText())-32));

}

publicstaticvoidmain(Stringarg[])

(

newDemo();

)

)

3.設(shè)計一個界面如圖。當點擊“確認”按鈕后,使“開始考試”按鈕可用,

并使“學(xué)號”、“姓名”后的文本框及“確認”按鈕不可用。點擊“開始考試”

按鈕后,使“下一題”按鈕可用,同時設(shè)置“開始考試”按鈕不可用。

:C/S考試系統(tǒng)□0?

importjava.awt.*;

importjava.awt.event.*;

importjavax.swing.*;

classTestPanelextendsJPanelimplementsActionListener

(

JButtonstartButton;

JLabeltimeLabel;

JTextAreaquestionArea;

JRadioButtonradicButton[]=newJRadioButton[5];〃五個單選按鈕,

目的是設(shè)置前四個答案選項都不選中,而第五個選項選中,但第五個按鈕設(shè)置為不可見

ButtonGroupbuttonGroup=newButtonGroupO;

JButtonanswerButton;

JButtonquestionButton;

JButtonscoreButton;

publicTestPanel()

(

setLayout(newBorderLayout());

JPanelnorthPanel=newJPanel();

northPanel.setLayout(newGridLayout(2,1));

startButton=newJButton("開始考試");

startButton.addActionListener(this);

timeLabel=newJLabel("考試剩余時間”);

northPanel.add(startButton);

northPanel.add(timeLabel);

add(northPanel,BorderLayout.NORTH);

questionArea=newJTextArea(30,10);

questionArea.setLineWrap(true);

questionArea.setWrapStyleWord(true);

questionArea.setFont(newFont("幼圓”,Font.PLAIN,16));

intvScroll=ScrolIPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED;

inthScroll=ScrolIPaneConstants.HORIZONTAL_SCROLLBAR_NEVER;

add(new

JScrollPane(questionArea,vScroll,hScrol1),BorderLayout.CENTER);

JPanelsouthPanel=newJPanel();

JPanelradioPanel=newJPanel();〃放5個單選按鈕的面板

String=

for(inti=0;i<radioButton.length;i++)

radioButton[i]=newJRadioButton(s[i],false);

buttonGroup.add(radioButton[i]);

radioPanel.add(radioButton[i]);

)

radioButton[radioButton,length-1].setVisible(false);〃第五個

單選按鈕不可見

answerButton=newJButton("提交答案”);

answerButton.setEnabled(false);

answerButton.addActionListener(this);

questionButton=newJButton("下一題”);

questionButton.setEnabled(false);

questionButton.addActionListener(this);

scoreButton=newJButton("成績”);

scoreButton.setEnabled(false);

scoreButton.addActionListener(this);

southPanel.add(radioPanel);

southPanel.add(answerButton);

southPanel.add(questionButton);

southPanel.add(scoreButton);

add(southPanel,BorderLayout.SOUTH);

)

publicvoidactionPerformed(ActionEvente)

(

if(e.getSource()==startButton)

(

questionButton.setEnabled(true);

startButton.setEnabled(false);

}

)

}

classMyFrameextendsJFramcimplementsActionListencr

(

JButtonstartButton;

JLabelxh,xm;

JTcxtFieldxhl,xirl;

JButtonok;

TestPaneltp=newTestPanelO;

MyFrame()

(

JPanelp=newJPanel0;

xh二newJLabel("學(xué)號:〃);

xm=newJLabel("姓名:”);

xhl=newJTextField(lO);

xml=newJTextField(lO);

ok=newJButton("確認");

p.add(xh);p.add(xhl);

p.add(xm);p.add(xml);p.add(ok);

add(p,BorderLayout.NORTH);

add(tp);

ok.addActionListener(this);

setSize(400,300);

setVisible(true);

)

publicvoidactionPerformed(ActionEvente)

(

tp.startButton.setEnabled(true);

xhl.setEnabled(false);

xml.setEnabled(false);

ok.setEnabled(false);

)

publicstaticvoidmain(Stringar[])

{newMyFrame();}

}

項目6

一、選擇題

1.以下類中,具有繪圖能力的類是(B)。

A)ImageB)GraphicsC)FontD)Color

2.Graphics類中提供的繪圖方法分為兩類:一類是繪制組形,另一類是繪

制(B)o

A)屏幕B)文本C)顏色D)圖像

3.下列方法中不屬于Graphics類的顯示文本的方法是(D)。

A)drawBytesB)drawCharsC)drawStringD)drawLine

4.下面的程序?qū)崿F(xiàn)了在窗口中繪制一個以(70,70)為圓心,50為半徑,

邊框是綠色的圓,圓心是紅色的。應(yīng)填入的語句行是(B)。

classexamextendsFrame

publicvoidpaint(Graphicsg)

(

g.setColor(Color,green);

g.drawOva1(20,20,100,100);

g.setColor(Color,red);

)

A)drawRect(70,70,1,1);B)g.drawRect(70,70,1,1);

C)g.drawLine(70,70,1,1);D)g.drawOva1(70,70,70,70);

5.在窗體的坐標(50,50)處以紅色顯示“紅色文字”,填入的正確語句

是(C)。

classexamextendsFrame

{publicvoidpaint(Graphicsg)

g.drawString(”紅色文字”,50,50);

)

)

A)g.setColor(Color.Red);B)setColor(Color,red);

C)g.setColor(Color,red);D)setcolor(Color,red);

6.下列方法中不能完成畫直線的方法是(D)。

A)drawPolylineB)drawRectC)drawLineD)drawChars

二、填空題

1.paint()方法的參數(shù)是Graphics類的實例。

2.drawRect(intxl,intyl,intx2,inty2)中,x2和y2分別代表矩形的

寬度、高度。

3.如果在(60,80)處畫一個點,通過drawOval方法實現(xiàn),則該方法中的參

數(shù)應(yīng)為(60,80,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論