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();    }}

这里写图片描述

原创粉丝点击