Java程序设计实训教程参考答案10
更新时间:2024-04-21 13:04:01 阅读量: 综合文库 文档下载
1.AWT组件集提供的组件大致可以分为哪几类?各起有什么作用?
AWT组件大致可以分为以下三类:
(1)容器类组件 (2)布局类组件 (3)普通组件类
容器类组件可以用来容纳其他普通组件或者甚至是容器组件自身,起到组织用户界面的作用;布局类组件本身是非可视组件,但它们却能很好地在容器中布置其他普通可视组件;AWT提供了一系列的普通组件以构建用户图形界面,它们主要包括:标签、文本框、文本域、按钮、复选框、单选框、列表框、下拉框、滚动条和菜单等。 2.AWT提供的布局方式有哪几种?请分别进行简述。 (1)FlowLayout
FlowLayout是最简单的一种布局方式,被容纳的可视组件从左向右,从上至下依次排
列,若一组件在本行放置不下,就自动排到下一行的开始处,该方式为Panel类和Applet类容器的默认布局方式。 (2)BorderLayout
BorderLayout布局方式的特点是:将容器划分为“东”“西”“南”“北”“中”五个区,
BorderLayout.EAST、BorderLayout. WEST、BorderLayout.SOUTH、
分别为
BorderLayout.NORTH和BorderLayout.CENTER,每个区可以摆放一个组件,因此最多可以在BorderLayout的容器组件中放置五个子组件,前面已提到过,该布局方式是Frame或Dialog容器类组件的默认布局方式。 (3)GridLayout
GridLayout布局将容器划分为行和列的网格,每个网格单元可以放置一个组件,组件通
过add()方法从上到下,从左至右顺序加入网格各个单元中,因此,在使用这种布局时,用户应首先设计好排列位置,然后再依次调用add()方法进行添加。 (4)GridBagLayout
GridBagLayout是所有AWT布局管理方式中最繁的,同时也是功能最强的,这主要是
因为它提供了许多可设置参数,使得容器的布局方式可以得到准确的控制,尽管设置步骤相对要复杂得多,但是只要理解了它的基本布局思想,就可以很容易使用GridBagLayout来进行界面设计了。 (5)CardLayout
CardLayout布局将组件(通常是Panel类的容器组件)象扑克牌(卡片)一样摞起来,每次只能显示其中的一张,实现分页的效果,每一页中可以有各自的界面,这样就相当于扩
展了原本有限的屏幕区域。
3.简述如何创建AWT的菜单系统。
AWT提供的菜单系统类包括:MenuBar、MenuItem、Menu、CheckboxMenuItem以及PopupMenu。MenuBar类对应菜单系统的整体,Menu类对应菜单系统中的一列菜单(实际上它只是一种特殊的菜单项),MenuItem和CheckboxMenuItem类则对应具体的菜单项,其中CheckboxMenuItem为带复选框的菜单项,而PopupMenu类对应弹出式菜单,它是菜单Menu类的子类。菜单系统创建好后,最后必须调用Frame类的setMenuBar()方法将其加入到框架界面中。
4.简述AWT提供的基于事件监听模型的事件处理机制。
基于事件监听模型的事件处理是从一个事件源授权到一个或多个事件监听者,组件作为事件源可以触发事件,通过addXXXlistener()方法向组件注册监听器,一个组件可以注册多个监听器,如果组件触发了相应类型的事件,此事件被传送给已注册的监听器,事件监听器通过调用相应的实现方法来负责处理事件的过程。
5.列出几个你所熟悉的AWT事件类,并举例说明什么时候会触发这些事件。
(1)ActionEvent类:可以是鼠标单击按钮或者菜单,也可以是列表框的某选项被双击
或文本框中的回车行为。
(2)KeyEvent类:当用户按下或释放键时产生该类事件,也称为键盘事件。 (3) MouseEvent类:当用户按下鼠标、释放鼠标或移动鼠标时会产生鼠标事件。
6.AWT规定的MouseEvent类对应哪些监听器接口?这些接口中都定义有哪些抽象方法?
(1)MouseListener
public abstract void mouseClicked(MouseEvent mouseevent); public abstract void mousePressed(MouseEvent mouseevent); public abstract void mouseReleased(MouseEvent mouseevent); public abstract void mouseEntered(MouseEvent mouseevent); public abstract void mouseExited(MouseEvent mouseevent);
(2)MouseMotionListener
public abstract void mouseDragged(MouseEvent mouseevent); public abstract void mouseMoved(MouseEvent mouseevent);
7.简述AWT为何要给事件提供相应的适配器(即Adapter类)?
Java规定:实现一个接口时必须对该接口的所有抽象方法进行具体的实现,哪怕有些抽象方法事件用户根本用不上,也要将其实现,比如上例中的keyPressed()方法,为此,Java提供了一种叫做Adapter(适配器)的抽象类来简化事件处理程序的编写。适配器类很简单,它其实就是一个实现了接口中所有抽象方法的“空”类,本身不提供实际功能, 8.简述AWT与Swing组件集间的区别?
AWT组件集依赖于特定的平台,而Swing组件集独立于运行平台;
Swing组件集实现了模型与视图和组件相分离;
Swing组件集提供了比AWT更多、功能更强的组件,增加了新的布局管理方式(如BoxLayout),同时还设计出了更多的处理事件。
9.创建一个有文本框和三个按钮的框架窗口程序,同时要求按下不同按钮时,文本框中能显示不同的文字。 import java.awt.*; import java.awt.event.*; public class ActionEvent1 {
private static Frame frame; //定义为静态变量以便main使用 private static Panel myPanel; //该面板用来放置按钮组件 private Button button1; //这里定义按钮组件 private Button button2; //以便addActionListener private Button button3;
private TextField textfield1; //定义文本框组件
public ActionEvent1() //构造方法, 建立图形界面 {
// 创建面板容器类组件 myPanel = new Panel(); // 创建按钮组件
button1 = new Button(\按钮1\button2 = new Button(\按钮2\button3 = new Button(\按钮3\textfield1 = new TextField(30);
MyListener myListener = new MyListener(); // 建立一个actionlistener让两个按钮共享 button1.addActionListener(myListener); button2.addActionListener(myListener); button3.addActionListener(myListener); textfield1.addActionListener(myListener);
}
myPanel.add(button1); // 添加组件到面板容器 myPanel.add(button2); myPanel.add(button3); myPanel.add(textfield1);
//定义行为事件处理内部类,它实现ActionListener接口
private class MyListener implements ActionListener { /*
利用该内部类来监听所有行为事件源产生的事件 */ }
public static void main(String s[]) {
ActionEvent1 ae = new ActionEvent1(); // 新建ActionEvent1组件 public void actionPerformed(ActionEvent e) { }
// 利用getSource()方法获得组件对象名
// 也可以利用getActionCommand()方法来获得组件标识信息 // 如 e.getActionCommand().equals(\按钮1\Object obj = e.getSource(); if (obj == button1)
textfield1.setText(\按钮1被单击\else if (obj == button2)
textfield1.setText(\按钮2被单击\else if (obj == button3)
textfield1.setText(\按钮3被单击\else
textfield1.setText(\
}
}
frame = new Frame(\新建Frame // 处理窗口关闭事件的通常方法(属于匿名内部类) frame.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) {System.exit(0);} }); frame.add(myPanel); frame.pack(); frame.setVisible(true);
10.创建一个带有多级菜单系统的框架窗口程序,要求每单击一个菜单项,就弹出一个相对应的信息提示框。 import java.awt.*; import java.awt.event.*; import javax.swing.*;
class DialogFrame extends JFrame implements ActionListener { public DialogFrame() { setTitle(\练习11\ setSize(300, 300);
addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } } );
JMenuBar mbar = new JMenuBar(); setJMenuBar(mbar);
JMenu fileMenu = new JMenu(\文件\ JMenu s = new JMenu(\特殊功能\
s.add(specials[0]);
specials[0].addActionListener(this); s.add(specials[1]);
specials[1].addActionListener(this); mbar.add(fileMenu); fileMenu.add(s);
aboutItem = new JMenuItem(\关于\ aboutItem.addActionListener(this); fileMenu.add(aboutItem);
exitItem = new JMenuItem(\退出\ exitItem.addActionListener(this); fileMenu.add(exitItem); }
public void actionPerformed(ActionEvent evt) { Object source = evt.getSource(); if(source == aboutItem)
{ if (dialog1 == null) // first time
dialog1 = new AboutDialog(this,\关于\ dialog1.show(); }
else if(source == exitItem) { System.exit(0); }
else if(source == specials[0]) { if (dialog2 == null) // first time
dialog2 = new AboutDialog(this,\功能1\ dialog2.show(); }
else if(source == specials[1]) { if (dialog3 == null) // first time
dialog3 = new AboutDialog(this,\功能2\ dialog3.show(); } }
private AboutDialog dialog1; private AboutDialog dialog2; private AboutDialog dialog3; private JMenuItem aboutItem; private JMenuItem exitItem; private JMenuItem[] specials = { new JMenuItem(\功能1\ new JMenuItem(\功能2\ }; }
class AboutDialog extends JDialog
{ public AboutDialog(JFrame parent, String title) { super(parent, title, true); JPanel p2 = new JPanel(); JButton ok = new JButton(\ p2.add(ok);
getContentPane().add(p2, \ ok.addActionListener(new ActionListener()
{ public void actionPerformed(ActionEvent evt) { setVisible(false); } } );
setSize(250, 150); } }
public class DialogTest {
public static void main(String[] args)
{ JFrame f = new DialogFrame(); f.show(); } }
11.请分别用AWT及Swing组件来设计实现计算器程序,要求能完成简单四则运算。 下面给出Swing版的参考程序,AWT版的类似。 import java.awt.*; import java.awt.event.*; import javax.swing.*;
class CalculatorPanel extends Jpanel implements ActionListener { public CalculatorPanel()
{ setLayout(new BorderLayout()); display = new JTextField(\ display.setEditable(false); add(display, \ JPanel p = new JPanel();
p.setLayout(new GridLayout(4, 4)); String buttons = \ for (int i = 0; i < buttons.length(); i++)
addButton(p, buttons.substring(i, i + 1)); add(p, \ }
private void addButton(Container c, String s) { JButton b = new JButton(s); c.add(b);
b.addActionListener(this); }
public void actionPerformed(ActionEvent evt) { String s = evt.getActionCommand();
if ('0' <= s.charAt(0) && s.charAt(0) <= '9' || s.equals(\
{ if (start) display.setText(s);
else display.setText(display.getText() + s); start = false; } else { if (start)
{ if (s.equals(\
{ display.setText(s); start = false; } else op = s; } else
{ double x =
Double.parseDouble(display.getText()); calculate(x); op = s; start = true; } } }
public void calculate(double n) { if (op.equals(\ else if (op.equals(\ else if (op.equals(\ else if (op.equals(\ else if (op.equals(\ display.setText(\ }
private JTextField display;
private double arg = 0; private String op = \ private boolean start = true; }
class CalculatorFrame extends JFrame { public CalculatorFrame() { setTitle(\ setSize(200, 200);
addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } } );
Container contentPane = getContentPane(); contentPane.add(new CalculatorPanel()); } }
public class Calculator
{ public static void main(String[] args) { JFrame frame = new CalculatorFrame(); frame.show(); } }
正在阅读:
Java程序设计实训教程参考答案1004-21
成本会计习题(一)和答案09-28
IT数码服务中心综合版12-15
信息员新闻写作培训资料08-19
物理(心得)之浅谈初中物理习题课的教学05-08
水泥混凝土路面设计 程序计算07-22
最新人教版小学数学六年级下册第3单元圆柱与圆锥教案02-01
河南省南阳市第一中学2018届高三第十三次考试理综化学试题Word版05-24
师生情作文300字02-04
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 程序设计
- 答案
- 参考
- 教程
- Java
- 数据结构第二次单元测试题库(串到树)
- 演讲会工作流程
- 小数除法表格式 - 图文
- 广州大学07-08模拟电子技术考试卷(B卷)
- 乳畜业练习题含答案 - 图文
- 国军标技术状态管理
- 全国计算机等级考试一级试题4
- 南京市2018届高三第三次模拟考试物理试题 - 图文
- 江苏省常州市金坛区第一中学2015-2016学年高二上学期9月阶段调研
- 2018-2019年河南省开封高级中学初升高自主招生考试数
- 电子商务推广方案
- 小学古诗词积累竞赛试题三
- 小学奥数专题之-数论专题典型结论汇总
- (考试必备)浙江省杭州市七校2011届高三上学期期中联考 地理 -
- 《建筑工程危险源识别与风险评价清单》
- 多联机空调主要技术要求
- 幼儿教育基础知识模拟卷
- 微生物学习题 - 图文
- 重庆文理学院第十届秋季田径运动会秩序册(1)
- 2014年九年级初中化学上册月考题 - 图文