for(i = 0; i < nomes.length; i++)
{
b[i] = new JButton(nomes[i]);
}
c.add(b[i]);
ai o q eu quero fazer é o seguinte: eu quero q ao apertar o botao 2 por exemplo, apareca num JTextField o numero 2…e assim por diante…ja tentei varios jeitos de fazer e nao, consegui…todos os jeitos q eu consegui aparecia o numero 9 no JTextField…independentemente do botao clicado
final String nomes[] = {1,2,3,4,5,6,7,8,9};
for (int i = 0; i < nomes.length; i++) {
JButton b = new JButton(nomes[i]);
b.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
teuTextField.setText(nomes[i]);
}
});
b[i] = b;
}
Assim, qdo vc clicar no botoa, ele vai receber o numero correspondente ao index dele.
É porque, como está acontecendo a criação de uma classe anônima, as variáveis usadas dentro de métodos redefinidos (mouseClicked, no caso) devem ter valores conhecidos…tente:
final String nomes[] = {1,2,3,4,5,6,7,8,9};
for (int i = 0; i < nomes.length; i++) {
JButton b = new JButton(nomes[i]);
final int j = i;
b.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
teuTextField.setText(nomes[j]);
}
});
b[i] = b;
}
final String nomes[] = {1,2,3,4,5,6,7,8,9};
for (int i = 0; i < nomes.length; i++) {
JButton b = new JButton(nomes[i]);
final int j = i;
b.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
textFieldQueVoceDeclarouEmAlgumLugarAnteriormente.setText(nomes[j]);
}
});
b[i] = b;
}