1.问题
设计一个界面,里面有两个文本区域,一个文本区域输入,另一个文本区域自动求和。
2.解决方法
要采用文本监听
代码清单1
package org.example;
import java.awt.*;
import javax.swing.*;
public class MyWindow extends JFrame {
public JTextArea area1,area2;
PoliceListen listener;
MyWindow(){
init();
setBounds(100,100,300,300);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
void init(){
area1=new JTextArea(9,30);
area2=new JTextArea(9,30);
setLayout(new FlowLayout());
add(new JScrollPane(area1));
add(new JScrollPane(area2));
area2.setEditable(false);//设置结果区域不可编辑
listener=new PoliceListen();
listener.setView(this);
area1.getDocument().addDocumentListener(listener);//向文档注册监听器
}
}
代码清单2
package org.example;
import javax.swing.event.DocumentListener;
import javax.swing.event.*;
public class PoliceListen implements DocumentListener {
MyWindow view;
public void setView(MyWindow view) {
this.view = view;//初始化
}
public void changedUpdate(DocumentEvent e) {//接口方法
String str = view.area1.getText();//要输入
String regex = "[\\s\\d\\p{Punct}]+";//用正则表达式来组成
String[] numbers = str.split("\\s*,\\s*|\\s+|-");//用空格,逗号隔开
double sum = 0, average = 0;
int count = 0;
for (String number : numbers) {
if (!number.isEmpty()) {
try {
sum +=Double.parseDouble(number);
count++;
} catch (NumberFormatException f) {
// 忽略非数字字符
}
}
view.area2.setText("求和: " + sum);
}
}
public void removeUpdate(DocumentEvent e) { //接口方法
changedUpdate(e);
}
public void insertUpdate(DocumentEvent e) { //接口方法
changedUpdate(e);
}
}
代码清单3
package org.example;
public class lei {
public static void main(String args[]){
MyWindow win=new MyWindow();
win.setTitle("计算");
}
}
3.结语
在java编程中要注意不能够重复定义一个变量。