import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class test2 extends JFrame{
    JTextField jtf1;
    JTextField jtf2;
    JTextField jtf3;
    JTextField jtf4;
    JButton jb;
    JTextArea jta;
    int number1;
    int number2;
    int result;
    String s;
    public test2(){
     super("乘法运算");
     Container container = getContentPane();
     container.setLayout(new FlowLayout());
     jtf1 = new JTextField("请输入数字",5);
     jtf2 = new JTextField("请输入数字",5);
     jtf3 = new JTextField("结果!",10);
        jtf4 = new JTextField("请在每次输入数字后按回车,否则计算无效",20);
     jtf3.setEditable(false);
     jtf4.setEditable(false);
     jb = new JButton("相乘");
        jb.setEnabled(false); 
     jta = new JTextArea(20,20);
        jta.setEditable(false);
        container.add(jtf1);
        container.add(jtf2);
        container.add(jtf3);
        container.add(jtf4);
        container.add(jb);
        container.add(jta);
        eventHandler eventhandler = new eventHandler();
        
        jtf1.addActionListener(eventhandler);
        jtf2.addActionListener(eventhandler);
        jb.addActionListener(eventhandler);
        
        setSize(500,500);
        setVisible(true);
    }
    
private class eventHandler implements ActionListener {
public void actionPerformed(ActionEvent e) {
try{
test1 test = new test1();  //另一个类,负责两数相乘的计算

if(e.getSource() == jtf1)
number1 = Integer.parseInt(jtf1.getText());
if(e.getSource() == jtf2)
number2 = Integer.parseInt(jtf2.getText());
if(jtf1.getText() != null && jtf2.getText() != null)
jb.setEnabled(true);
if(e.getSource() == jb)
result = test.account(number1,number2);
 s = "最终结果是: " + result;
 jtf3.setText(s);
 jta.setText(test.toString());
}catch(NumberFormatException exception){
         JOptionPane.showMessageDialog(null, "请在方框输入正确的信息");
}

}

}
public static void main(String[] args) {
test2 test = new test2();
test.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}我的原意是先把jb的enabled设为false,然后等jtf1和jtf2里面都输入数字之后再把jb的enabled设为true,再开始计算 ,但自己写出来发觉不对,可能逻辑不太对,又不知道到底有没有哪种方法可以判断jtextfield里输入的是数字,请高手指教!!!

解决方案 »

  1.   

    判断jtextfield里输入的是数字加一鼠标事件,当鼠标离开时判断文本框里的内容是否为数字,不是数字文本框重新获得焦点,重新输入。
      

  2.   

    搂主应该先搜索下CSDN上的:很多
    t1.addKeyListener(new KeyAdapter()
    {
    public void keyTyped(KeyEvent e)
    {
    char input = e.getKeyChar();
    if (input == '\n')     //回车 就计算
    //generate();
    else if (!Character.isDigit(input) && input != '\b')//数字和删除符
    {
    e.consume();
    } else
    {
    btn.setEnabled(true);//btn为按钮,输入正确即设为可用
    }
    }
    public void keyPressed(KeyEvent e)
    {
    }
    public void keyReleased(KeyEvent e)
    {
    }
    });
      

  3.   

    java.awt.event.TextListener 可以检查输入值
    一楼说的可能错了,楼主要的功能该是监听字段值改变的时候去调用的方法,而与鼠标动作无关。