您的位置:首页 > 编程语言 > Java开发

【Java】编写一个小应用程序计算输入数字的和、平均值

2018-03-26 21:56 337 查看
说明:这是武汉理工大学计算机学院Java语言程序设计课程的第二次实验。

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

运行结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐