import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class Interface extends JFrame implements ActionListener{
JPanel painel = new JPanel();
JButton[][] botao = new JButton[10][10];
public void inicializarBotoes() {
for(int cont1 = 0; cont1 < botao.length; cont1++){
for(int cont2 = 0; cont2 < botao[cont1].length; cont2++) {
botao[cont1][cont2] = new JButton();
}
}
}
public void determinarTamanhoBotoes() {
for(int cont1 = 0; cont1 < botao.length; cont1++){
for(int cont2 = 0; cont2 < botao[cont1].length; cont2++) {
botao[cont1][cont2].setPreferredSize(new Dimension(25, 25));
}
}
}
public void adicionarEvento() {
for(int cont1 = 0; cont1 < botao.length; cont1++){
for(int cont2 = 0; cont2 < botao[cont1].length; cont2++) {
botao[cont1][cont2].addActionListener(this);
}
}
}
public void actionPerformed(ActionEvent event){
for(int cont1 = 0; cont1 < botao.length; cont1++){
for(int cont2 = 0; cont2 < botao[cont1].length; cont2++) {
botao[cont1][cont2].setIcon(new ImageIcon("Caminho da Imagem"));
}
}
}
public void adicionarBotoes() {
painel.setLayout(new GridLayout(10, 10));
for(int cont1 = 0; cont1 < botao.length; cont1++){
for(int cont2 = 0; cont2 < botao[cont1].length; cont2++) {
painel.add(botao[cont1][cont2]);
}
}
getContentPane().add(painel);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
pack();
setVisible(true);
}
public static void main(String args[])
{
Interface teste = new Interface();
teste.inicializarBotoes();
teste.adicionarEvento();
teste.determinarTamanhoBotoes();
teste.adicionarBotoes();
}
}
ActionListener e Vetor de JButton [RESOLVIDO]
3 Respostas
Cara, veja o parâmetro event do método actionPerformed. Ele retorna o objeto que é a fonte do evento (no caso o botão que foi clicado) através do método event.getSource().
Se você for usar o método actionPerformed da classe de interface apenas nos botões, então você tem certeza que a fonte do evento é um botão. Daí tu pode fazer um cast do objeto para JButton sem medo.
public void actionPerformed(ActionEvent event){
JButton botao = (JButton)event.getSource();
botao.setIcon(new ImageIcon("img\\images1.jpg"));
}
Qualquer coisa avisa aí.
PS.: Só por curiosidade: tu pretende fazer um jogo do Campo Minado?
Tópico movido para o fórum de interface gráfica.
Cara muito obrigado, deu certo usando o método event.getSource(), e respondendo sua pergunta, sim eu estava fazendo um campo minado.
ViniGodoy da próxima vez prestarei mais atenção onde devo postar as minhas duvidas.
Obrigado, pela ajuda !!