java文本框、文本区和布局的设计

java编写一个具有如下布局的应用程序,要求当在上面的文本区中输入若干数时,下面的文本框同时对输入的数进行求和运算并求出平均数。即随着输入的变化,文本框不断更新求和及平均值。结果图省略



import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;


public class test2_2 {
	
		double n=0;//和值
		int m=1;//数值个数
		int j=0;//数值位数	
		int q[]=new int[100];//存放输入的数
	
	
	public test2_2()//构造方法
	{
		JFrame f=new JFrame();
		f.setTitle("和与平均值");//设置标题
		f.setBounds(300, 300, 500,300);//设置大小位置
		f.setResizable(true);
		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置关闭
		f.setVisible(true);//可见
		Container c=f.getContentPane();//获取容器
		c.setLayout(new GridBagLayout());//设置网格组布局
		
		//文本输入框
		GridBagConstraints grid1=new GridBagConstraints();
		grid1.insets=new Insets(0, 0, 6, 0);
		grid1.anchor=GridBagConstraints.NORTH;
		grid1.gridx=0;grid1.gridy=0;
		
		JPanel p1=new JPanel(new GridBagLayout());//面板设置
		p1.setPreferredSize(new Dimension(420, 100));//大小
		
		JLabel L1=new JLabel("    请输入任意数以空格分开,结束");//提示标签
		GridBagConstraints bL1=new GridBagConstraints();
		bL1.gridx=0;bL1.gridy=0;
		
		JTextArea textarea1=new JTextArea("",4,37);//文本输入域
		GridBagConstraints btextarea1=new GridBagConstraints();
		btextarea1.gridx=0;btextarea1.gridy=1;
		JScrollPane s=new JScrollPane(textarea1);
		p1.add(L1,bL1);
		p1.add(s,btextarea1);
		
		//自动输出框
		GridBagConstraints grid2=new GridBagConstraints();
		grid2.insets=new Insets(0, 0, 5, 0);
		grid2.anchor=GridBagConstraints.CENTER;
		grid2.gridx=0;grid2.gridy=1;
		
		JPanel p2=new JPanel(new GridBagLayout());//面板设置
		p2.setPreferredSize(new Dimension(450, 90));//面板大小
		
		GridBagConstraints gridb1=new GridBagConstraints();//和值,平均值输出框
		gridb1.gridx=0;gridb1.gridy=0;
		GridBagConstraints gridb2=new GridBagConstraints();
		gridb2.gridx=1;gridb2.gridy=0;gridb2.ipadx=300;
		GridBagConstraints gridb3=new GridBagConstraints();
		gridb3.gridx=0;gridb3.gridy=1;
		GridBagConstraints gridb4=new GridBagConstraints();
		gridb4.gridx=1;gridb4.gridy=1;gridb4.ipadx=300;
		JLabel L2=new JLabel("和值         ");
		JTextField textfield1=new JTextField(100);
		textfield1.setEditable(false);
		JLabel L3=new JLabel("平均值     ");	
		JTextField textfield2=new JTextField(100);
		textfield2.setEditable(false);

		
		JButton button=new JButton("按钮输出结果");//按钮界面
		GridBagConstraints gridb5=new GridBagConstraints();
		gridb5.insets=new Insets(8, 0, 0, 0);
		gridb5.gridx=0;gridb5.gridy=3;gridb5.gridwidth=2;
		
		p2.add(L2,gridb1);
		p2.add(textfield1,gridb2);
		p2.add(L3,gridb3);
		p2.add(textfield2,gridb4);
		p2.add(button,gridb5);
		
		try {//文本域内容处理
			textarea1.addKeyListener(new KeyAdapter() {
				public void keyTyped(KeyEvent e) {
					String strings=textarea1.getText();//获取文本域
					try {
						if(strings.length()!=0)
						{
							n=m=0;//复原
							String number[]=strings.split("\\s+");//以空格分离
							for(int l=0;l<number.length;l++)
							{
								m++;
								n=n+Integer.valueOf(number[l]);
							}
						}
						else
						{
							n=0;//复原
							m=1;
						}
					} catch (NumberFormatException e1) {
						e1.printStackTrace();
					}
					
					
					try {//格式验证
						int i=e.getKeyChar()-48;//提取正确的格式
						if((0<=i&&i<=9)||i==-16||i==-40)//空格32,删除键8()
						{
							textfield1.setText(String.format("%.2f",n));
							textfield2.setText(String.format("%.2f",n/m));				
						}
						else//输入格式错误
						{
							JDialog errordialog=new JDialog(f, "警告!", true);
							errordialog.setSize(130, 100);
							errordialog.setLocationRelativeTo(f);
							JLabel errorlabel=new JLabel("输入格式错误!");
							errordialog.add(errorlabel);
							errordialog.setVisible(true);
						}
					} catch (Exception e1) {
						e1.printStackTrace();
					}
								
				}
				
			});
		} catch (Exception e2) {
			e2.printStackTrace();
		}
		
		//按钮事件处理
		try {
			button.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent e) {
					JDialog dialog=new JDialog(f, "结果显示",true);
					dialog.setSize(400, 160);
					Container cd=dialog.getContentPane();
					
					JPanel p3=new JPanel(new GridBagLayout());//面板设置
					p3.setPreferredSize(new Dimension(380, 150));//面板大小
							
					GridBagConstraints Grid1=new GridBagConstraints();//和值,平均值输出框
					Grid1.gridx=0;Grid1.gridy=0;
					GridBagConstraints Grid2=new GridBagConstraints();
					Grid2.gridx=1;Grid2.gridy=0;Grid2.ipadx=300;
					GridBagConstraints Grid3=new GridBagConstraints();
					Grid3.gridx=0;Grid3.gridy=1;
					GridBagConstraints Grid4=new GridBagConstraints();
					Grid4.gridx=1;Grid4.gridy=1;Grid4.ipadx=300;
					JLabel L4=new JLabel("和值         ");
					JTextField text1=new JTextField(100);
					text1.setEditable(false);
					JLabel L5=new JLabel("平均值     ");	
					JTextField text2=new JTextField(100);
					text2.setEditable(false);
					p3.add(L4,Grid1);
					p3.add(text1,Grid2);
					p3.add(L5,Grid3);
					p3.add(text2,Grid4);
					cd.add(p3);
					
					try {
						text1.setText(String.format("%.2f",n));
						text2.setText(String.format("%.2f",n/m));;
					} catch (Exception e1) {
						e1.printStackTrace();
					}
					
					dialog.setLocationRelativeTo(f);;
					dialog.setVisible(true);
				}
			});
		} catch (Exception e1) {
			e1.printStackTrace();
		}
		c.add(p1,grid1);
		c.add(p2,grid2);
		f.setVisible(true);//可见

	}

	public static void main(String[] args) {

		try {
			new test2_2();//创建对象,通过构造函数直接实现功能
		} catch (Exception e) {
			e.printStackTrace();
		}	
	}
}
  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值