解析JAVA程序设计第六章课后答案.docx

上传人:b****6 文档编号:6672617 上传时间:2023-01-08 格式:DOCX 页数:27 大小:21.56KB
下载 相关 举报
解析JAVA程序设计第六章课后答案.docx_第1页
第1页 / 共27页
解析JAVA程序设计第六章课后答案.docx_第2页
第2页 / 共27页
解析JAVA程序设计第六章课后答案.docx_第3页
第3页 / 共27页
解析JAVA程序设计第六章课后答案.docx_第4页
第4页 / 共27页
解析JAVA程序设计第六章课后答案.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

解析JAVA程序设计第六章课后答案.docx

《解析JAVA程序设计第六章课后答案.docx》由会员分享,可在线阅读,更多相关《解析JAVA程序设计第六章课后答案.docx(27页珍藏版)》请在冰豆网上搜索。

解析JAVA程序设计第六章课后答案.docx

解析JAVA程序设计第六章课后答案

第6章习题解答

1.简述Java中设计图形用户界面程序的主要步骤。

对于设计图形用户界面程序而言,一般分为两个步骤:

第一步,设计相应的用户界面,并根据需要对相关的组件进行布局;第二步,添加相关的事件处理,如鼠标、菜单、按钮和键盘等事件。

2.试说明容器与组件之间的关系。

组件(component)是图形用户界面中的各种部件(如标签、按钮、文本框等等),所有的组件类都继承自JComponent类。

容器(container)是用来放置其他组件的一种特殊部件,在java中容器用Container类描述。

3.阅读下面程序,说明其运行结果和功能。

//filename:

MyFrame.java

importjava.awt.*;

importjava.awt.event.*;

importjavax.swing.*;

publicclassMyFrame

{

publicstaticvoidmain(Stringagrs[]){

JFramef=newJFrame("简单窗体示例");

f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

JLabell=newJLabel("习题1");

f.getContentPane().add(l,BorderLayout.CENTER);

f.pack();

f.setVisible(true);

}

}

程序的运行结果如下:

 

4.阅读下面程序,说明其运行结果和功能。

//filename:

TestButton.java

importjava.awt.*;

importjavax.swing.*;

publicclassTestButtonextendsJFrame

{

JButtonb1,b2;

TestButton(Strings)

{

super(s);

b1=newJButton("按钮1");

b2=newJButton("按钮2");

setLayout(newFlowLayout());

add(b1);

add(b2);

setSize(300,100);

setVisible(true);

}

publicstaticvoidmain(Stringargs[]){

TestButtontest;

test=newTestButton("测试按钮");

}

}

程序的运行结果如下:

 

5.阅读下面程序,说明其运行结果和功能。

//filename:

TestCheck.java

importjava.awt.*;

importjava.awt.event.*;

importjavax.swing.*;

publicclassTestCheckextendsJFrame

{

JLabell1,l2,l3;

TextFieldname;

CheckboxGroupg;

Checkboxc1,c2,c3,c4,c5;

TestCheck(){}

voidgo()

{

setTitle("测试选择按钮");

l1=newJLabel("姓名:

");

l2=newJLabel("性别:

");

l3=newJLabel("爱好:

");

name=newTextField(20);

g=newCheckboxGroup();

c1=newCheckbox("男",true,g);

c2=newCheckbox("女",false,g);

c3=newCheckbox("唱歌");

c4=newCheckbox("跳舞");

c5=newCheckbox("上网");

setLayout(newFlowLayout());

add(l1);add(name);

add(l2);add(c1);add(c2);

add(l3);

add(c3);add(c4);add(c5);

pack();

show();

}

publicstaticvoidmain(String[]args){

TestChecktest=newTestCheck();

test.go();

test.addWindowListener(newWindowAdapter(){

publicvoidwindowClosing(WindowEvente){

System.exit(0);

}

});

}

}

 

6.试设计一个计算器程序的界面。

//计算器Count.java

importjava.awt.*;

importjava.awt.event.*;

classMainPanelextendsPanel//ScreenPanleclass

{

TextFieldscn=newTextField("");//TextFieldscreen

Stringstr[]={"7","8","9","*","4","5","6","-","1","2","3","+","0",".","/","="};

Buttonbtn[]=newButton[str.length];

Buttonclear=newButton("清除");

Stringtemp,op,tempInKey,keyDown;//?

?

charopChar;//?

publicfloatnum1,num2;

booleanflag;

MainPanel()

{

PanelScreenPanel=newPanel();//ScreenPanel

ScreenPanel.setLayout(newBorderLayout());//Screeninthenorth

ScreenPanel.add(scn,BorderLayout.CENTER);

scn.disable();//cannotreceiveevent

PanelButtonPanel=newPanel();//ButtonPanel

ButtonPanel.setLayout(newGridLayout(4,4));

for(inti=0;i<16;i++)

{

btn[i]=newButton(str[i]);//newButton

ButtonPanel.add(btn[i]);//addtopanel

}

PanelButtonPane2=newPanel();//ButtonPanel

ButtonPane2.add(clear);

setLayout(newBorderLayout());//Mainpanel

add(ScreenPanel,BorderLayout.NORTH);

add(ButtonPanel,BorderLayout.CENTER);

add(ButtonPane2,BorderLayout.SOUTH);

}

}

classCountFrameextendsFrame//constructaframe

{

publicCountFrame(Stringtitle)

{

super(title);

MainPanelt=newMainPanel();//MainPanel

add(t);//addMainFrame

addWindowListener(newend());//addlistener

}

classendextendsWindowAdapter//closethewindow,innerclass

{

publicvoidwindowClosing(WindowEvente)

{

System.exit(0);

}

}

}

classCount//main()

{

publicstaticvoidmain(Stringargs[])

{

CountFramefrm=newCountFrame("JAVA计算器");

frm.setSize(220,180);//newframe,goabove

frm.show();

}

}

程序的运行结果为:

 

7.试设计一个电话簿程序的界面。

 

//PhoneBook.java

importjavax.swing.*;

importjava.awt.*;

publicclassPhoneBookextendsJFrame

{

voidgo()

{

this.setTitle("电话簿程序");

this.setSize(400,200);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

ContainercontentPane=this.getContentPane();

String[]data={"张三","李四","赵二","王五"};

JListdataList=newJList(data);

dataList.setSelectedIndex

(1);//select"two"

dataList.getSelectedValue();//returns"two"

JPanelp1=newJPanel();

JPanelp2=newJPanel();

JPanelp3=newJPanel();

p1.setSize(200,400);

contentPane.add(p1,BorderLayout.WEST);

contentPane.add(p2,BorderLayout.CENTER);

contentPane.add(p3,BorderLayout.SOUTH);

p1.add(dataList);

p2.setLayout(newGridLayout(6,1));

JLabell1=newJLabel("姓名:

");

JTextFieldt1=newJTextField("李四");

JLabell2=newJLabel("联系电话:

");

JTextFieldt2=newJTextField("023-");

p2.add(l1);

p2.add(t1);

p2.add(l2);

p2.add(t2);

p3.add(newJButton("添加"));

p3.add(newJButton("删除"));

p3.add(newJButton("修改"));

this.show();

}

publicstaticvoidmain(String[]g)

{

PhoneBookh=newPhoneBook();

h.go();

}

}

 

8.为6和7题的添加事件处理功能。

第6题加事件处理:

//Count.java

importjava.awt.*;

importjava.awt.event.*;

classMainPanelextendsPanel//ScreenPanleclass

{

TextFieldscn=newTextField("");//TextFieldscreen

Stringstr[]={"7","8","9","*","4","5","6","-","1","2","3","+","0",".","/","="};

Buttonbtn[]=newButton[str.length];

Buttonclear=newButton("清除");

Stringtemp,op,tempInKey,keyDown;//?

?

charopChar;//?

publicfloatnum1,num2;

booleanflag;

MainPanel()

{

PanelScreenPanel=newPanel();//ScreenPanel

ScreenPanel.setLayout(newBorderLayout());//Screeninthenorth

ScreenPanel.add(scn,BorderLayout.CENTER);

scn.disable();//cannotreceiveevent

keyInputkPut=newkeyInput();//keyAction

scn.addKeyListener(kPut);

PanelButtonPanel=newPanel();//ButtonPanel

ButtonPanel.setLayout(newGridLayout(4,4));

for(inti=0;i<16;i++)

{

btn[i]=newButton(str[i]);//newButton

ButtonPanel.add(btn[i]);//addtopanel

btn[i].addActionListener(newlsn());

btn[i].addKeyListener(kPut);//buttonsbelistened

}

PanelButtonPane2=newPanel();//ButtonPanel

ButtonPane2.add(clear);

clear.addActionListener(newlsn());

clear.addKeyListener(kPut);

setLayout(newBorderLayout());//Mainpanel

add(ScreenPanel,BorderLayout.NORTH);

add(ButtonPanel,BorderLayout.CENTER);

add(ButtonPane2,BorderLayout.SOUTH);

}

classlsnimplementsActionListener//listener

{

publicvoidactionPerformed(ActionEvente)

{

temp=scn.getText();//savethenumbersonscreenfirst

if(flag)

{

temp="";//clearthenumbersonthescreen

flag=false;

}

if(e.getActionCommand()=="+"|e.getActionCommand()=="-"

|e.getActionCommand()=="*"|e.getActionCommand()=="/")

{//ifoperationclicked

if(scn.getText().equals(""))//等于时没有内容的处理

return;

num1=Float.parseFloat(scn.getText());

op=e.getActionCommand();//operationtype

scn.setText("");

}

elseif(e.getActionCommand()=="=")//calculate

{

try{

if(scn.getText().equals(""))//等于时没有内容的处理

return;

num2=Float.parseFloat(scn.getText());

if(op=="+")

num2=num1+num2;

elseif(op=="-")

num2=num1-num2;

elseif(op=="*")

num2=num1*num2;

elseif(op=="/")

{

if(num2<0.&num2>0.)

{

scn.setText("0不能做除数");

flag=true;

return;

}

num2=num1/num2;

}

scn.setText(String.valueOf(num2));

flag=true;

}

catch(ArithmeticExceptionex)

{

System.out.println(ex.toString());

}

}

elseif(e.getActionCommand()=="清除")//clear

scn.setText("");

else//addtoscreen

scn.setText(temp+e.getActionCommand());//setText

}

}

classkeyInputextendsKeyAdapter

{

publicvoidkeyPressed(KeyEventk)

{

if((k.getKeyCode()>47&k.getKeyCode()<58)|(k.getKeyCode()>96&k.getKeyCode()<112)

|k.getKeyCode()==10)

{

tempInKey=scn.getText();//num1

keyDown=String.valueOf(k.getKeyChar());//chartoString

System.out.print(k.getKeyChar());

if(flag)

{

tempInKey="";//clearthenumbersonthescreen

flag=false;

}

if(k.getKeyChar()=='+'|k.getKeyChar()=='-'|k.getKeyChar()=='*'|

k.getKeyChar()=='/')

{

if(scn.getText().equals(""))//等于时没有内容的处理

return;

num1=Float.parseFloat(scn.getText());

opChar=k.getKeyChar();

scn.setText("");

}

elseif(k.getKeyChar()=='='|k.getKeyCode()==10)//calculate

{

try{

System.out.println(opChar);

if(scn.getText().equals(""))//等于时没有内容的处理

return;

num2=Float.parseFloat(scn.getText());

if(opChar=='+')

num2=num1+num2;

elseif(opChar=='-')

num2=num1-num2;

elseif(opChar=='*')

num2=num1*num2;

elseif(opChar=='/')

{

if(num2<0.&num2>0.)

{

scn.setText("0不能做除数");

flag=true;

return;

}

num2=num1/num2;

}

scn.setText(String.valueOf(num2));

flag=true;

}

catch(ArithmeticExceptionex)

{

System.out.println(ex.toString());

}

}

else

scn.setText(tempInKey+keyDown);//set

}

else

return;

}

}

}

classCountFrameextendsFrame//constructaframe

{

publicCountFrame(Stringtitle)

{

super(title);

MainPanelt=newMainPanel();//MainPanel

add(t);//addMainFrame

addWindowListener(newend());//addlistener

}

classendextendsWindowAdapter//closethewindow,innerclass

{

publicvoidwindowClosing(WindowEvente)

{

System.exit(0);

}

}

}

classCount//main()

{

publicstaticvoidmain(Stringargs[])

{

CountFramefrm=newCountFrame("JAVA计算器");

frm.setSize(220,180);//newframe,goabove

frm.show();

}

}

第7题加事件处理:

//PhoneBook.java

importjavax.swing.*;

importjava.awt.*;

importjava.awt.event.*;

publicclassPhoneBookextendsMouseAdapterimplementsActionListener

{

JFramemainFrm;

JTextFieldt1;

JTextFieldt2;

JListdataList;

String[]data;

String[]phone;

intnow=-1;

voidgo()

{

mainFrm=newJFrame();

mainFrm.setTitle("电话簿程序");

mainFrm.setSize(400,200);

mainFrm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

ContainercontentPane=mainFrm.getContentPane();

data=newSt

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1