- 说明:这是武汉理工大学计算机学院【Java语言程序设计】课程的第二次实验:编写一个小应用程序计算输入数字的和、平均值
- >>点击查看武汉理工大学计算机专业课程资料汇总
- >>点击查看WUTer计算机专业实验汇总
- 谨记:纸上得来终觉浅,绝知此事要躬行。
Java语言程序设计--实验2:文本框、文本区和布局的设计
实验目的:
通过编写一个Java GUI应用程序,熟悉Java GUI应用程序的结构和开发过程;掌握面向对象程序设计中的“封装和继承”的基本原理,“类、对象和接口”的基本概念、以及“Java的事件处理机制”、“图形用户界面设计”技术。
实验内容:
问题描述:
自己构思,编写一个具有如下布局的小应用程序,要求当在上面的文本区中输入若干数时,下面的文本框同时对输入的数进行求和运算并求出平均数。即随着输入的变化,文本框不断更新求和及平均值。
基本要求:
进一步熟悉小应用程序的结构和开发过程;掌握数组的创建和使用方法;掌握文本框和文本区的使用方法;掌握接口的使用方法,掌握基本组件的事件处理机制;掌握java.awt包的布局类使用方法。
实验代码:
package test2;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JTextField;
import javax.swing.JLabel;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.util.StringTokenizer;
import javax.swing.JTextPane;
public class test2 extends JFrame {
private JPanel contentPane;
private JTextPane numberField;
private JTextField sumField;
private JTextField aveField;
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
test2 frame = new test2();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
public test2() {
super("第二次实验");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 395, 271);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
numberField = new JTextPane();
numberField.addKeyListener(new KeyAdapter() {
@Override
public void keyTyped(KeyEvent e) {
double sum = 0,avg = 0;
switch(e.getKeyChar()) {
case KeyEvent.VK_SPACE: //分隔符为空格
case KeyEvent.VK_COMMA: //分隔符为英文逗号
case KeyEvent.VK_ENTER: //分隔符为回车
String str=numberField.getText();
StringTokenizer analyze = new StringTokenizer(str," ,\n");
int allnum=analyze.countTokens();
for(int i =0;i<allnum;i++) {
String temp = analyze.nextToken(); //字符串分割解析工具
sum = sum+Double.parseDouble(temp);
}
if(allnum>0) {
avg = sum/allnum;
}else {
avg = 0;
}
sumField.setText(Double.toString(sum));
aveField.setText(Double.toString(avg));
}
}
});
numberField.setBounds(14, 13, 349, 101);
contentPane.add(numberField);
JLabel label = new JLabel("和 值");
label.setBounds(57, 140, 72, 18);
contentPane.add(label);
JLabel label_1 = new JLabel("平均值");
label_1.setBounds(57, 182, 72, 18);
contentPane.add(label_1);
sumField = new JTextField();
sumField.setBounds(130, 137, 233, 24);
contentPane.add(sumField);
sumField.setColumns(10);
aveField = new JTextField();
aveField.setBounds(130, 179, 233, 24);
contentPane.add(aveField);
aveField.setColumns(10);
}
}