编写一个应用程序,窗口中通过按钮input,弹出一个输入对话框,并在对话框中输入字符串inputText,并对inputText进行处理,要求提取文本中的数字数据,并对数组进行排序之后,输出在文本区域output中,同时显示求和的结果与平均值。通过按钮find,可以弹出一个输入框,可供输入数据num,并实现在数组中查找num,查找的结果用message的对话框显示
编写主类,创建一个带标题的窗口
public class Example9_17 {
public static void main(String args[]) {
WindowInput win=new WindowInput();
win.setTitle("带输入对话框的窗口");
win.setBounds(80,90,200,300);
}
}
设定南北中的边界布局,插入按钮,通过在按钮中添加监视器来控制输入对话框和查找对话框弹出,通过改变正则表达式来实现对本文的数字提取
import java.awt.BorderLayout;
import java.awt.Dialog;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Arrays;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
public class WindowInput extends JFrame implements ActionListener {
JTextArea show;
JButton input,find;
double sum=0;
double n[];
MyDialog dialog;
String inputText[];
WindowInput() {
input=new JButton("弹出输入对话框");
find=new JButton("请输入要查找的数据");
show=new JTextArea();
add(input,BorderLayout.NORTH);
add(find,BorderLayout.SOUTH);
add(new JScrollPane(show),BorderLayout.CENTER);
input.addActionListener(this);
find.addActionListener(this);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void actionPerformed(ActionEvent e) {
if(e.getSource()==input){
String str=JOptionPane.showInputDialog(this,"请输入数字,用空格隔开","输入对话框",JOptionPane.PLAIN_MESSAGE);
String regex="[\\D]+";
inputText=str.split(regex);
for(int i=0;i<inputText.length;i++) {
double a=Double.parseDouble(inputText[i]);
if(i==0) {
show.append(""+a);
}
else {
show.append("+"+a);
}
sum=sum+a;
}
show.append("="+sum);
show.append("\n平均值为:"+sum/inputText.length);
n=new double[inputText.length];
for(int i=0;i<inputText.length;i++) {
n[i] = Double.parseDouble(inputText[i]);
}
Arrays.sort(n);
show.append("\n数组排序后是:[");
for(int i=0;i<inputText.length;i++) {
if(i==0) {
show.append(n[i]+"");
}
else {
show.append(","+" "+n[i]);
}
}
show.append("]");
}
if(e.getSource()==find){
dialog=new MyDialog(this,"我是对话框");
}
}
}
查找数字并创建自定义对话框
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.event.DocumentEvent;
public class MyDialog extends JDialog implements ActionListener{
WindowInput window;
JTextField text;
JLabel label,label2;
MyDialog(WindowInput m,String s){
super(m,s);
window=m;
text=new JTextField(9);
label=new JLabel("请输入要查找的数字");
label2=new JLabel();
add(label);
add(text);
add(label2);
text.addActionListener(this);
setLayout(new FlowLayout());
setVisible(true);
setBounds(300,300,200,150);
}
public void actionPerformed(ActionEvent e) {
text.getDocument().addDocumentListener(new javax.swing.event.DocumentListener(){
public void changedUpdate(DocumentEvent arg0) {
Find();
}
public void insertUpdate(DocumentEvent arg0) {
Find();
}
public void removeUpdate(DocumentEvent arg0) {
if(text.getText() == "" || text.getText().equals("")) {
label2.setText("");
}
else {
Find();
}
}
});
}
public void Find(){
if(window.inputText!=null) {
boolean p=false;
for(String numStr:window.inputText) {
if(numStr.equals(text.getText())) {
p=true;
break;
}
else {
p=false;
}
}
if(p) {
label2.setText("该数存在数组中");
}
else {
label2.setText("该数不存在数组中");
}
}
}
}