习题答案.docx
《习题答案.docx》由会员分享,可在线阅读,更多相关《习题答案.docx(24页珍藏版)》请在冰豆网上搜索。
![习题答案.docx](https://file1.bdocx.com/fileroot1/2023-2/2/5bb1620e-d341-43d3-a468-a7c7a1bff290/5bb1620e-d341-43d3-a468-a7c7a1bff2901.gif)
习题答案
一、填空题
1.Java的Swing包中定义框架的类是__.JFrame
2.Java的Swing包中定义面板的类是__JPanel_____
3.Java的Swing包中定义按钮的类是___JButton___
4.Java的Swing包中定义文本域的类是__JTextField
5.Java的Swing包中定义标签的类是___JLabel
6.Java的Swing包中定义组合框的类是__JComboBox
7.Java的Swing包中定义菜单条的类是__JMenuBar
8.Java的Swing包中定义菜单的类是__JMenu
9.Java的Swing包中定义菜单项的类是_JMenuItem
10.Java的Swing包中定义选项卡的类是__JTabbedPane
11.Color类定义在_java.awt___包中。
12.ActionEvent类定义在__java.awt.event___包中。
13.ActionEvent事件的监听接口是__ActionListener___,注册方法名是__addActionListener__,事件处理方法名是_____actionPerformed________
14.WindowEvent事件的监听接口是_____WindowListener______,注册方法名是_____addWindowListener_________
15.设置容器布局管理器的方法是___setLayout___
16.显示JFrame框架的方法名是________setVisible______
17.设置JFrame框架标题的方法名是_______setTitle______
18.设置JFrame框架大小的方法名是_______setSize______
19.重画面板的方法名是_____repaint_____
20.AWT的用户界面组件库被更稳定、通用、灵活的库取代,该库称为Swing组件库。
21.不依赖本地GUI的Swing组件称为轻型组件,AWT组件称为重型组件。
22.图形类可以分为三组:
容器类、组件类和辅助类。
23.FlowLayout布局管理器可以使用三个常量之一来指定组件的对齐方式,这三个常量是24.FlowLayout.RIGHT、FlowLayout.CENTER和FlowLayout.LEFT。
25.FlowLayout布局方式默认的对齐方式是居中,默认的水平间距和垂直间距都是5个像素。
二、单项选择题
1.下面属于容器类的是(A)。
AJframeBJtextFieldCColorDJmenu
2.FlowLayout的布局策略是(A)
A)按添加的顺序由左至右将组件排列在容器中。
B)按设定的行数和列数以网格的形式排列组件。
C)将窗口划分成五部分,在这五个区域中添加组件。
D)组件相互叠加排列在容器中。
3.BorderLayout的布局策略是(C)
A)按添加的顺序由左至右将组件排列在容器中。
B)按设定的行数和列数以网格的形式排列组件。
C)将窗口划分成五部分,在这五个区域中添加组件。
D)组件相互叠加排列在容器中。
4.GridLayout的布局策略是(B)
A)按添加的顺序由左至右将组件排列在容器中。
B)按设定的行数和列数以网格的形式排列组件。
C)将窗口划分成五部分,在这五个区域中添加组件。
D)组件相互叠加排列在容器中。
5.JFrame中内容窗格缺省的布局管理器是(B)
A)FlowLayoutB)BorderLayoutC)GridLayoutD)CardLayout
6.JPanel缺省的布局管理器是(A)
A)FlowLayoutB)BorderLayoutC)GridLayoutD)CardLayout
三、判断题
1.AWT事件最初是为AWT组件设计的,但是许多Swing组件都可以触发它们。
2.FlowLayout是Jframe内容窗格默认的布局管理器。
3.Java使用事件委托处理模型来处理事件。
源对象和监听对象可以是同一个对象。
4.Graphics类是在不同的平台上显示图形和图像的一个具体类。
答案:
1.(对)
2.(错)
3.(对)
4.(错)
三、编程题:
掌握:
(1)面板和面板布局。
(2)使用框架及布局
1.创建一个图形化界面,模拟教师中讲台和座位的分布。
讲台放置在教师的最上端,学生座位按行、列分布。
指定学生座位按7行5列的布局分布。
如图所示:
(考察知识点:
定义框架和面板,分别采用布局管理器进行布局,添加按钮组件)
答案:
importjavax.swing.JFrame;
importjavax.swing.JButton;
importjava.awt.Container;
importjava.awt.FlowLayout;
importjava.awt.GridLayout;
importjava.awt.BorderLayout;
importjavax.swing.JPanel;
publicclassTestextendsJFrame{
publicTest(){
Containerc=this.getContentPane();
c.add(newJButton("讲台"),BorderLayout.NORTH);
JPanelp=newJPanel();
p.setLayout(newGridLayout(7,5));
for(inti=0;i<35;i++){
p.add(newJButton("座位"+i));
}
this.getContentPane().add(p,BorderLayout.CENTER);
}
publicstaticvoidmain(String[]args)
{
TestmyFrame=newTest();
myFrame.setSize(700,700);
myFrame.setVisible(true);
myFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
2.请编写一个Application,其功能为:
在其图形窗口按右对齐方式摆放三个按钮,三个按钮的标题分别显示为:
“Button1”,“Button2”,“Button3”。
(考察知识点:
FlowLayout布局管理器的使用)
mportjava.awt.*;
importjavax.swing.*;
classMyFrameextendsJFrame
{
publicMyFrame()
{
Containercontainer=this.getContentPane();
container.setLayout(newFlowLayout(FlowLayout.RIGHT));
container.add(newJButton("Button1"));
container.add(newJButton("Button2"));
container.add(newJButton("Button3"));
}
publicstaticvoidmain(String[]args)
{
MyFramemyFrame=newMyFrame();
myFrame.setTitle("Show");
myFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
myFrame.setSize(200,200);
myFrame.setVisible(true);
}
}
3.请编写一个Application,其功能为:
在其框架的内容网格上安排两个按钮,分别命名为East,West,内容网格的布局为BorderLayout布局,并将两个按钮放置在内容网格的东部区域和西部区域。
(考察知识点:
BorderLayout布局管理器的使用方法)
importjava.awt.*;
importjavax.swing.*;
classMyFrameextendsJFrame
{
publicMyFrame()
{
Containercontainer=this.getContentPane();
container.setLayout(newBorderLayout());
container.add(newButton("west"),BorderLayout.WEST);
container.add(newButton("east"),BorderLayout.EAST);
}
publicstaticvoidmain(String[]args)
{
MyFramemyFrame=newMyFrame();
myFrame.setTitle("Show");
myFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
myFrame.setSize(200,200);
myFrame.setVisible(true);
}
}
4.编写下图所示的计算器界面:
将16个按钮放置在面板中(面板的布局为4*4的GridLayout布局),再将面板放置在框架中的中间(框架布局为缺省布局BorderLayout)。
(考察知识点:
框架面板的定制,在框架中添加面板,使用BorderLayout和GridLayout布局)
importjava.awt.*;
importjava.awt.event.*;
publicclassApp
{
publicstaticvoidmain(String[]args)
{
newMyFrame("计算器");
}
}
classMyFrameextendsFrame
{
TextFieldtf;
Panelp=newPanel();
Buttonb[]=newButton[16];
MyFrame(Strings)
{
super(s);
this.setSize(180,180);
//框架的缺省布局是:
BorderLayout
tf=newTextField(20);
add(tf,BorderLayout.NORTH);
Stringname[]={"1","2","3","+",//第1行
"4","5","6","-",//第2行
"7","8","9","*",//第3行
"0",".","=","/",//第2行
};
p.setLayout(newGridLayout(4,4));
for(inti=0;i{
b[i]=newButton(name[i]);
p.add(b[i]);
}
add(p,BorderLayout.CENTER);
this.setVisible(true);
}
}
掌握:
(1)绘制字符串、字符、字节
(2)字体、字型、字号的使用(3)颜色的设置
5.请编写一个Application,实现如下图所示的图形界面:
(考察知识点:
在指定坐标位置上设置字符串的颜色)
提示:
在图形界面坐标(20,30)处以绿色显示“我喜欢绿色。
”,在坐标(20,60)处以蓝色显示“我也喜欢蓝色。
”。
答案:
importjava.awt.*;
importjavax.swing.*;
publicclassMyFrameextendsJFrame
{
publicMyFrame()
{
MyPanelmyPanel=newMyPanel();
this.getContentPane().add(myPanel);
}
publicstaticvoidmain(String[]args)
{
MyFramemyFrame=newMyFrame();
myFrame.setTitle("ShowString");
myFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
myFrame.setSize(200,200);
myFrame.setVisible(true);
}
}
classMyPanelextendsJPanel
{
publicvoidpaintComponent(Graphicsg)
{
super.paintComponent(g);
g.setColor(Color.green);
g.drawString("我喜欢绿色。
",20,30);
g.setColor(Color.blue);
g.drawString("我也喜欢蓝色。
",20,60);
}
}
6.请编写一个Application,分别以红、绿、黄、粉、白、蓝等六种颜色,在同一行上显示六个数字1、2、3、4、5、6。
图形界面如下图所示:
(考察知识点:
对字符进行不同颜色的设置)
答案:
importjava.awt.*;
importjavax.swing.*;
classMyFrameextendsJFrame
{
publicMyFrame()
{
MyPanelmyPanel=newMyPanel();
this.getContentPane().add(myPanel);
}
publicstaticvoidmain(String[]args)
{
MyFramemyFrame=newMyFrame();
myFrame.setTitle("Show");
myFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
myFrame.setSize(200,200);
myFrame.setVisible(true);
}
}
classMyPanelextendsJPanel
{
publicvoidpaintComponent(Graphicsg)
{
super.paintComponent(g);
intj=0;
Colorcolor[]=newColor[6];
color[0]=Color.red;color[1]=Color.green;
color[2]=Color.yellow;color[3]=Color.pink;
color[4]=Color.white;color[5]=Color.blue;
for(charch='1';ch<='6';ch++)
{
g.setColor(color[ch-'1']);
g.drawString(""+ch,10+j,30);
j+=20;
}
}
}
7.请编写一个Application,实现以不同的灰度值在一行上显示数字0-9的图形界面,如下图所示:
(考察知识点:
对字符进行不同灰度的设置)
答案:
importjava.awt.*;
importjavax.swing.*;
classMyFrameextendsJFrame
{
publicMyFrame()
{
MyPanelmyPanel=newMyPanel();
this.getContentPane().add(myPanel);
}
publicstaticvoidmain(String[]args)
{
MyFramemyFrame=newMyFrame();
myFrame.setTitle("Show");
myFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
myFrame.setSize(500,400);
myFrame.setVisible(true);
}
}
classMyPanelextendsJPanel
{
publicvoidpaintComponent(Graphicsg)
{
super.paintComponent(g);
intj=0;
intred=0,green=0,blue=0;
for(charch='0';ch<='9';ch++)
{
g.setColor(newColor(red,green,blue));
g.drawString(""+ch,10+j,30);
j+=20;
red+=25;
green+=25;
blue+=25;
}
}
}
8.编写一个Application,实现如下图的图形界面:
提示:
将字符串“Ilikejava!
”在图形界面上重复显示5次,每次显示在1行上。
要求显示字体为"Courier"字体,字体风格为斜体,第1行字符串的字体大小是15,后面的每一行的字体大小依次增加5,每行的间隔为30像素。
(考察知识点:
设置字符串的显示次数、字体、字号、字符间距)
答案:
importjava.awt.*;
importjavax.swing.*;
classMyFrameextendsJFrame
{
publicMyFrame()
{
MyPanelmyPanel=newMyPanel();
this.getContentPane().add(myPanel);
}
publicstaticvoidmain(String[]args)
{
MyFramemyFrame=newMyFrame();
myFrame.setTitle("Show");
myFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
myFrame.setSize(250,250);
myFrame.setVisible(true);
}
}
classMyPanelextendsJPanel
{
publicvoidpaintComponent(Graphicsg)
{
super.paintComponent(g);
Fontf1;
intsize=15;
inty=30;
Stringstr="Ilikejava!
";
for(inti=0;i<5;i++)
{
f1=newFont("Courier",Font.ITALIC,size);
g.setFont(f1);
g.drawString(str,30,y);
size+=5;
y+=30;
}
}
}
9.请编写一个Application,以不同颜色在一列上显示字符串"每个字的颜色都不同!
",实现的图形界面可参考下图:
(考察知识点:
设置字符串的渐变颜色)
@程序
importjava.awt.*;
importjavax.swing.*;
classMyFrameextendsJFrame
{
publicMyFrame()
{
MyPanelmyPanel=newMyPanel();
this.getContentPane().add(myPanel);
}
publicstaticvoidmain(String[]args)
{
MyFramemyFrame=newMyFrame();
myFrame.setTitle("Show");
myFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
myFrame.setSize(200,200);
myFrame.setVisible(true);
}
}
classMyPanelextendsJPanel
{
publicvoidpaintComponent(Graphicsg)
{
super.paintComponent(g);
intj=0;
char[]b={'每','个','字','的','颜','色','都','不','同','!
'};
intred=188,green=220,blue=99;
for(inti=0;i{
g.setColor(newColor(red,green,blue));
g.drawString(""+b[i],20,20+j);
j+=15;
red=(red+35)%256;green=(green+55)%256;blue=(blue+85)%256;
}
}
}
掌握:
(1)画直线
(2)画长方形、画正方形(3)画圆、画椭圆、画扇形、画弧
10.编写Java程序,实现如图所示的图形界面:
提示:
将程序窗口的右上的1/4区域用红色画成实心的长方形;将小程序窗口的左下的1/4区域用蓝色画成实心的长方形。
(考察知识点:
实心长方形绘制,填充颜色)
@程序
importjava.awt.*;
importjavax.swing.*;
classMyFrameextendsJFrame
{
publicMyFrame()
{
MyPanelmyPanel=newMyPanel();
this.getContentPane().add(myPanel);
}
publicstaticvoidmain(String[]args)
{
MyFramemyFrame=newMyFrame();
myFrame.setTitle("Show");
myFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
myFrame.setSize(200,200);
myFrame.setVis