窗体上有五个组件,其中包括:一个标签、两个文本框和两个按钮。第一个文本框用于输入一个整数,单击“计算平方”按钮时,在第二个文本框中显示计算结果。当输入不是整数时,则出现提示“这个数不是整数,请输入整数!”的信息对话框。如果输入的不是数字字符,则在第二个文本框中显示“输入的不是数数字字符”。
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)来进行判断。