从两个方面得到相同的结果

时间:2013-12-09 03:45:08

标签: java events jbutton jtextfield keyevent

我有两个jtextfeild(t1,t2)和一个jbutton(b1)......

t1 - 输入 t2-结果 b1 - 行动

我想要做的是如果我输入t1 - >当我打字时,t2答案中的1 + 2应为3。 同时如果我点击按钮,它也应该在t2中显示结果为3 ..

我的问题 - 我可以使用两个事件轻松完成此操作(t1中的按键事件和b1中的actionperformed事件)。但我想要做的是我只需要一个事件,根据要求我不能使用两个事件? Plz可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

  

“如果我输入t1 - > 1 + 2在t2中答案应为3,当我输入”

您可以使用KeyListener

t1.addKeyListener(new KeyAdapter(){
    public void keyReleased(KeyEvent e){
        int num1 = Integer.parseInt(t1.getText());
        int num2 = Integer.parseInt(t1.getText());
        tResult.setText(String.valueOf(num1 + num2);
    }
})
t2.addKeyListener(new KeyAdapter(){
    public void keyReleased(KeyEvent e){
        int num1 = Integer.parseInt(t1.getText());
        int num2 = Integer.parseInt(t1.getText());
        tResult.setText(String.valueOf(num1 + num2);
    }
})

每次对文本字段中的任何一个进行更新并更新结果文本字段时,上面将计算

使用一个监听器编辑:

t1.addActionListener(new MyListener());
t2.addActionListener(new MyListener());
button.addActionListener(new MyListener());

private class MyListener implements ActionListener{
    public void actionPerformed(ActionEvent e){
        int num1 = Integer.parseInt(t1.getText());
        int num2 = Integer.parseInt(t1.getText());
        tResult.setText(String.valueOf(num1 + num2);
    }
}

或者您可以使用Action

Action action = new AbstractAction(){
    public void actionPerformed(ActionEvent e){
        int num1 = Integer.parseInt(t1.getText());
        int num2 = Integer.parseInt(t1.getText());
        tResult.setText(String.valueOf(num1 + num2);
    }
});

t1.setAction(action);
t2.setAction(action);
button.setAction(action);