窗体上有五个组件,其中包括:一个标签、两个文本框和两个按钮。第一个文本框用于输入一个整数,单击“计算平方”按钮时,在第二个文本框中显示计算结果。当输入不是整数时,则出现提示“这个数不是整数,请输入整数!”的信息对话框。如果输入的不是数字字符,则在第二个文本框中显示“输入的不是数数字字符”。
package java实验; import java.awt.*; import java.awt.event.*; import java.math.BigInteger; import javax.swing.*; public class Square extends JFrame{ private JLabel label1=new JLabel("请输入一个整数"); private JTextField TextField1=new JTextField(15); private JTextField TextField2=new JTextField(30); private JButton bt1,bt2; public Square() { super("计算平方"); Container container=getContentPane(); container.setLayout(new FlowLayout()); TextField1.addKeyListener(new KeyListener() { public void keyPressed(KeyEvent event) { if(event.getKeyCode()==KeyEvent.VK_ENTER) { //键盘监控器,回车检测输入数据类型 String string1=TextField1.getText(); string1=string1.replaceAll("[0-9.]+", ""); //除去输入数据中的数字部分和小数点. if(string1.length()!=0) { //用最后的长度检测数据类型, TextField2.setText("输入的不是数字字符!"); //java String并不是以\0,所以通过剔除数字后的 TextField1.setText(""); //字符串长度是否为0检测是否为数字类型 } else { try { Integer.parseInt(TextField1.getText()); //将输入进来的数转化为Int型,如果不成功 } catch(NumberFormatException e){ //catch会捕捉此次异常,输出"输入的不是整数!" TextField2.setText("输入的不是整数!"); TextField1.setText(""); //并重置TextField1 } } } } @Override public void keyReleased(KeyEvent e) { // TODO 自动生成的方法存根 } @Override public void keyTyped(KeyEvent e) { // TODO 自动生成的方法存根 } }); TextField2.setEditable(false); bt1=new JButton("平方"); bt1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { String string1=TextField1.getText(); string1=string1.replaceAll("[0-9.]+", ""); if(string1.length()!=0) { TextField2.setText("输入的不是数字字符!"); TextField1.setText(""); } else { try { BigInteger num=new BigInteger(TextField1.getText());//与上面不同的是这里使用了BigInteger处理 num=num.pow(2); TextField2.setText(num.toString()); //并且在这次完成平方计算 } catch(NumberFormatException e){ TextField2.setText("输入的不是整数!"); TextField1.setText(""); } } } }); bt2=new JButton("退出"); bt2.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { System.exit(0); //“退出”键退出 } }); container.add(label1); container.add(TextField1); container.add(TextField2); container.add(bt1); container.add(bt2); setSize(500,250); setVisible(true); setLocationRelativeTo(null); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } }小结: Java中String并不是以"\0"结束,这与C或C++中不同,所以采用的是通过剔除输入的数据中的数字及小数点,再通过将处理后的字符串长度与0进行比较,判断输入类型,似乎也可以通过其他方式进行判断,例如isNumeric(String s)来进行判断。