JButtons - Duvidas em relação á interacção

Boas.

Eu tou a fazer uma calculadora, com interfaces gráficas. Queria saber se há alguma forma de saber se um certo bottão foi seleccionado. Por exemplo: se o botão sum for seleccionado:
Eu poderia fazer com if, do género,

JButton sum=new JButtom();
if(sum.isSelected()) E.sum(f1,f2);

onde f1 e f2 são fracções(de uma Class Fraction) e E(Class Euclid que faz operações sobre fracções). Eu tenho esses objectos programados, e os métodos todos bem feitos, como o sum do exemplo que dou.

O problema é que quando carrego no botão na minha frame que identifica o sum, eu tenho aquela condição, o programa passa á frente, isto é, dá falso.

E como receber informação, por exemplo, se eu carregar nos botões ‘1’,‘7’,‘3’ eu queria guardar estes valores numa variável, consoante eu carregar nas teclas.

Obrigado.

Podem dar umas dicas?

O primeiro problema que você notará ao fazer uma calculadora é que o componente deve ter o foco para reagir ao keypressed. Ou seja, se o usuário pressionar as teclas 1, 2, 3 e 4, não vai obter resultado algum, a menos que a tecla sendo pressionada esteja em foco. Para resolver esse problema, você terá que usar um ActionMap e um InputMap, como descrito aqui.

Depois, para saber qual número foi pressionado, use o método getSource do evento actionPerformed. Por exemplo:

public class ButtonPressAction extends AbstractAction {
    @Override public void actionPerformed(ActionEvent e) {
      if (e.getSource() == btnSoma) 
          //execute a ação do botão de somar.
      else if (e.getSource() == btnSubtracao)
          //executa a ação de subtrair
     }
}

E assim por diante…

Obrigado pela ajuda =).

Acho que agora vou conseguir resolver o meu problema.

Obrigado.