解析JAVA程序设计第六章课后答案.docx
《解析JAVA程序设计第六章课后答案.docx》由会员分享,可在线阅读,更多相关《解析JAVA程序设计第六章课后答案.docx(27页珍藏版)》请在冰豆网上搜索。
![解析JAVA程序设计第六章课后答案.docx](https://file1.bdocx.com/fileroot1/2023-1/8/89163a65-65a3-466b-8e00-ee107c535c8f/89163a65-65a3-466b-8e00-ee107c535c8f1.gif)
解析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