Pessoal, estou fazendo um trabalho para a faculdade onde tenho que fazer uma calculadora com interface gráfica, e tenho que tratar os botões.
E como eu fiz um vetor para armazenar os botões, queria saber se tem como eu tratar os botões de uma vez dentro de um for, já que o evento seria o mesmo. (neste caso, era só para escrever o valor do botão pressionado no textfield).
Vou colocar o código que fiz até agora, ok.
import java.awt.*;
import java.awt.event.*;
import java.awt.ComponentOrientation;
public class JanelaGrafica extends Frame{
private Panel lateral, base, valores;
private Button numeros[];
private TextField topo;
public JanelaGrafica(){
super("Calculadora");
setBounds(450,200,250,250);
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
//Vetor com os botões de números da calculadora
numeros = new Button[10];
//Cria os componentes
topo = new TextField(10);
//topo.setLayout(new FlowLayout());
//topo.add(new TextField(40));
valores = new Panel();
valores.setLayout(new GridLayout(4,3,5,5));
// Mudar a ordem de inserção dos botões para ficar semelhante a calculadora
// do Windows.
ComponentOrientation o = null;
ComponentOrientation y = null;
valores.setComponentOrientation(o.RIGHT_TO_LEFT); //Mudando a orientação.
for(int i=9; i>=0;i--){
numeros[i] = new Button(Integer.toString(i));
valores.add(numeros[i]);
}
base = new Panel();
base.setLayout(new GridLayout(1,1));
base.add(new Button("="));
lateral = new Panel();
lateral.setLayout(new GridLayout(4,1,5,5));
lateral.add(new Button("/"));
lateral.add(new Button("*"));
lateral.add(new Button("+"));
lateral.add(new Button("-"));
//Define o layout do container básico
setLayout(new BorderLayout());
//Adiciona os panels ao container básico
add(topo, BorderLayout.NORTH);
add(valores, BorderLayout.CENTER);
add(lateral, BorderLayout.EAST);
add(base, BorderLayout.SOUTH);
//TRATANDOS OS EVENTOS DOS BOTÕES
for(int i=0; i<10; i++){
numeros[i].addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
String aux;
aux = topo.getText();
topo.setText(aux + numeros[i].getLabel()); // aqui que da o erro.
}
});
}
}
}
Minha dúvida está a partir da linha 63.
Muito Obrigado.