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输入的变化,另一个文本区不断地更新求和及平均值。
Java
public class E{
public static void main(String args[]){
Computer com = new Computer();
}
}
Java
import 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异常。
Java
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
Face face = new Face();
}
}
Java
import 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 参考答案及解析,转载请注明来源!