改正如下,输入数字后回车即显示结果。当输入非数字时会提示
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class TextFieldTest extends JFrame{
public JTextField textInput1,textInput2,textShow;
FocusListen listener;
public TextFieldTest()
{
init();
setBounds(100,100,150,150);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
void init()
{
setLayout(new FlowLayout());
textInput1 = new JTextField(10);
textInput2 = new JTextField(10);
textShow = new JTextField(10);
textShow.setEditable(false);
listener = new FocusListen();
textInput1.addActionListener(listener);
textInput2.addActionListener(listener);
add(textInput1);
add(textInput2);
add(textShow);
}
public class FocusListen implements ActionListener{
int num1,num2;
@Override
public void actionPerformed(ActionEvent e) {
try{
num1=Integer.parseInt(textInput1.getText());
num2=Integer.parseInt(textInput2.getText());
if(num1<100||num1>200){
JOptionPane.showMessageDialog(null, "数据范围【100,200】请重新输入", "友情提示", 1);
textInput1.setText("");
return;
}
if(num2<100||num2>200){
JOptionPane.showMessageDialog(null, "数据范围【100,200】请重新输入", "友情提示", 1);
textInput2.setText("");
return;
}
textShow.setText(num1+num2+"");
}catch(NumberFormatException ee){
JOptionPane.showMessageDialog(null, "数据不合法", "警告", 2);
textInput2.setText("");
textInput1.setText("");
}
}
}
public static void main(String[] args) {
TextFieldTest win = new TextFieldTest();
win.setTitle("求和");
}
}
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class TextFieldTest extends JFrame{
public JTextField textInput1,textInput2,textShow;
FocusListen listener;
public TextFieldTest(){
init();
setBounds(100,100, 250,150);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
void init(){
setLayout(new FlowLayout());
textInput1 = new JTextField(10);
textInput2 = new JTextField(10);
textShow = new JTextField(10);
textShow.setEditable(false);
listener = new FocusListen();
textInput1.addFocusListener(listener);
textInput2.addFocusListener(listener);
add(textInput1);
add(textInput2);
add(textShow);
}
public class FocusListen implements FocusListener{
int num1=0,num2=0;
public void focusGained(FocusEvent e){
}
public void focusLost(FocusEvent e){
if( !(e.getSource() instanceof JTextField) ){
return;
}
if( textInput1.equals( e.getSource() ) ){
JTextField temp = (JTextField)e.getSource();
num1 = Integer.parseInt(temp.getText(), 10);
}else if( textInput2.equals( e.getSource() ) ){
JTextField temp = (JTextField)e.getSource();
num2 = Integer.parseInt(temp.getText(), 10);
}else{
return ;
}
if(num1<100||num1>200){
JOptionPane.showOptionDialog(null,"数据范围【100,200】请重新输入\n","友情提示",JOptionPane.DEFAULT_OPTION,JOptionPane.INFORMATION_MESSAGE,null,null,null);
return;
}
int sum = num1+num2;
textShow.setText(String.valueOf(sum));
}
}
public static void main(String[] args) {
TextFieldTest win = new TextFieldTest();
win.setTitle("求和");
}
}
关键的问题,在getInteger() 应该换成 parseInt()