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里输入的是数字,请高手指教!!!
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里输入的是数字,请高手指教!!!
解决方案 »
- jdbc 实现Oracle全库备份
- 求各位大侠帮忙 java导出为html文件 excel相关
- 如何转换日期格式
- 超简单 马上结贴
- java高手来帮帮我
- arraylist 去除相同值问题!!!!
- 学习ajax.....遇到问题,在线等......
- 正在写程序遇到一个小问题 很模糊关于instanceof 知道的朋友进来帮我看看吧 急!!在线等!! 谢谢 就一点!!
- 测试线程的并发中遇到的问题,java达人请进
- 一个关于swing中图片旋转的问题
- 各位大虾帮帮忙啊,急急急急急!!!!!!!!!!!
- java中在big-endian环境下生成的对象被序列化后能够在little-endian环境下被正确的反序列化吗?
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)
{
}
});
一楼说的可能错了,楼主要的功能该是监听字段值改变的时候去调用的方法,而与鼠标动作无关。