Java 习题9 参考答案及解析
来源:互联网 发布:淘宝禁售电话卡和天猫 编辑:程序博客网 时间:2024/06/01 19:50
1.问答题
(1)JFrame类的对象的默认布局是什么布局?
(2)一个容器对象是否可以使用add方法添加一个JFrame窗口?
(3)JTextField可以触发什么事件?
(4)JTextArea中的文档对象可以触发什么类型的事件?
(5)MouseListener接口中有几个方法?
(6)处理鼠标拖动触发的MouseEvent事件需要使用哪些接口?
问答题解析
1.Frame容器的默认布局是BorderLayout布局。
2.不可以。JFrame窗口是一个底层容器,其他组件必须被添加到底层容器中,以便借助这个底层容器和操作系统进行交互。窗口默认被系统添加到显示器屏幕上,因此不允许将一个窗口添加到另一个容器中。
3.ActionEvent
4.DocumentEvent
5.5个。分别是在事件源上按下鼠标键。在事件源上释放鼠标键。在事件源上单击鼠标。鼠标进入事件源。鼠标退出事件源。
6.MouseMotionListener
2.选择题
(1)下列哪个叙述是不正确的?
A.一个应用程序中最多只有一个窗口。
B.JFrame创建的窗口默认是不可见的。
C.不可以向JFrame窗口中添加JFrame窗口。
D.窗口可以调用setTitle(String s)方法设置窗口的标题。
(2)下列哪个叙述是不正确的?
A.JButton对象可以使用addActionListener(ActionListener 1)方法将没有实现ActionListener接口的类的实例注册为自己的监视器。
B.对于有监视器的JTextField文本框,如果该文本框处于活动状态(有输入焦点)时,用户即使不输入文本,只要按回车(Enter)键也可以触发ActoinEvent事件。
C.监视KeyEvent事件的监视器必须实现KeyListener接口。
D.监视WindowEvent事件的监视器必须实现WindowListener接口。
(3)下列哪个叙述是不正确的?
A.使用FlowLayout布局的容器最多可以添加5个组件。
B.使用BoderLayout布局的容器被划分为5个区域。
C.Jpanel的默认布局是FlowLayout布局。
D.JDialog的默认布局是BorderLayout布局。
选择题解析
1.A
一个应用程序中可以有若干个窗口。窗口默认是不可见的,需要调用setVisible(boolean b)设置窗口的可见性。
2.A
没有实现ActionListener接口的类的实例不能被注册
3.A
流水布局可以添加若干个组件。
3.编程题
(1)编写应用程序,有一个标题为“计算”的窗口,窗口的布局为FlowLayout布局。窗口中添加两个文本区,当我们在一个文本区输入若干个数时,另一个文本区同时对你输入的数进行求和运算并求出平均值,也就是说随着i输入的变化,另一个文本区不断地更新求和及平均值。
Javapublic class E{ public static void main(String args[]){ Computer com = new Computer(); }}
Javaimport java.awt.FlowLayout;import javax.swing.JFrame;import javax.swing.JScrollPane;import javax.swing.JTextArea;import javax.swing.event.DocumentEvent;import javax.swing.event.DocumentListener;public class Computer extends JFrame implements DocumentListener { JTextArea text1, text2; int count = 0; double sum = 0, aver = 0; Computer() { setLayout(new FlowLayout()); text1 = new JTextArea(6, 20); text2 = new JTextArea(6, 20); add(new JScrollPane(text1));// 滚动窗格 add(new JScrollPane(text2)); text2.setEditable(false);// 不可编辑 (text1.getDocument()).addDocumentListener(this);// 文本区调用getDocument方法放回所维护的文档,能触发DocumentEvent事件 setSize(300, 320); setVisible(true); validate(); setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); } @Override public void insertUpdate(DocumentEvent e) { changedUpdate(e); } @Override public void removeUpdate(DocumentEvent e) { changedUpdate(e); } @Override public void changedUpdate(DocumentEvent e) { String s = text1.getText(); String[] a = s.split("[^0123456789.]+");// 正则表达式,除了0-9和小数点以外的字符作为分隔符 sum = 0; aver = 0; count = 0; for (int i = 0; i < a.length; i++) { try { sum = sum + Double.parseDouble(a[i]);// 转换为double类型 count++; } catch (Exception ee) { } } aver = sum / count; text2.setText(null); text2.append("\n和:" + sum); text2.append("\n平均值:" + aver); }}
(2)编写一个应用程序,有一个标题为“计算”的窗口,窗口的布局为FlowLayout布局,设计4个按钮,分别命名为“加”、“减”、“乘”、“除”,另外,窗口中还有3个文本框。单击相应的按钮,将两个文本框的数字做运算,在第三个文本框中显示结果。要求处理NumberFormatException异常。
Javapublic class Test { public static void main(String[] args) { // TODO Auto-generated method stub Face face = new Face(); }}
Javaimport java.awt.Color;import java.awt.FlowLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JTextField;public class Face extends JFrame implements ActionListener { JButton jia; JButton jian; JButton cheng; JButton chu; JTextField one; JTextField two; JTextField three; JLabel label; public Face() { init(); setVisible(true); setResizable(true); validate(); setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); } public void init() { setLayout(new FlowLayout()); setSize(300, 320); setTitle("计算"); jia = new JButton("加"); jian = new JButton("减"); cheng = new JButton("乘"); chu = new JButton("除"); one = new JTextField(10); two = new JTextField(10); three = new JTextField(10); label = new JLabel(" ", JLabel.CENTER); label.setBackground(Color.green); add(one); add(label); add(two); add(three); add(jia); add(jian); add(cheng); add(chu); jia.addActionListener(this); jian.addActionListener(this); cheng.addActionListener(this); chu.addActionListener(this); } @Override public void actionPerformed(ActionEvent e) { double n; if (e.getSource() == jia) { double n1, n2; try { n1 = Double.parseDouble(one.getText()); n2 = Double.parseDouble(two.getText()); n = n1 + n2; three.setText(String.valueOf(n)); label.setText("+"); } catch (NumberFormatException ee) { three.setText("请输入数字字符"); } } else if (e.getSource() == jian) { double n1, n2; try { n1 = Double.parseDouble(one.getText()); n2 = Double.parseDouble(two.getText()); n = n1 - n2; three.setText(String.valueOf(n)); label.setText("-"); } catch (NumberFormatException ee) { three.setText("请输入数字字符"); } } else if (e.getSource() == cheng) { double n1, n2; try { n1 = Double.parseDouble(one.getText()); n2 = Double.parseDouble(two.getText()); n = n1 * n2; three.setText(String.valueOf(n)); label.setText("*"); } catch (NumberFormatException ee) { three.setText("请输入数字字符"); } } else if (e.getSource() == chu) { double n1, n2; try { n1 = Double.parseDouble(one.getText()); n2 = Double.parseDouble(two.getText()); n = n1 / n2; three.setText(String.valueOf(n)); label.setText("/"); } catch (NumberFormatException ee) { three.setText("请输入数字字符"); } } validate(); }}
- Java 习题9 参考答案及解析
- Java 习题3 参考答案及解析
- Java 习题1 参考答案及解析
- Java 习题6 参考答案及解析
- Java 习题8 参考答案及解析
- Java 习题7和习题10 参考答案及解析
- Java 习题2 参考答案及解析(2)
- Java 习题5 参考答案及解析(1)
- Java 习题5 参考答案及解析(2)
- Java 习题4 答案及解析
- 《汇编语言程序设计教程》人民邮电出版社第二版习题及参考答案
- 第十三讲习题参考答案
- 北大ACM习题参考答案
- apue 习题4.6参考答案
- 2011蓝桥杯java试题及部分参考答案
- 2004年9月全国计算机等级考试二级笔试试卷参考答案及解析
- 第一章 绪论习题参考答案
- 第六届蓝桥杯省赛(java)C组试题及参考答案
- 6月14日云栖精选夜读:阿里云将新增印度和印尼数据中心 加速全球化布局
- 使用 jQuery.i18n.properties 实现 Web 前端的国际化
- 第五章 分享内容到你的网站
- es6常用的语法
- uva
- Java 习题9 参考答案及解析
- JQuery验证插件validation的使用
- img相对于div垂直居中
- iOS-UILabel几种自适应情况
- 6月15日云栖精选夜读:阿里配管专家解读:如何最优成本搭建非标准的iOS构建集群
- 初涉UnityEditor
- jQuery知识总结
- 第六章 跟踪用户动作
- django的sql返回结果QuerySets