Estou com uma dúvida nos métodos selecionar(int indice) e colocarSites() eu queria que fosse criado dento do foreach varios botões dinamicamentes e a cada botão colocar uma ActionListener os botões são colocados na tela, mas o evento só é chamado o do ultimo botão criado como faço para criar vários eventos diferente um para cada botão criado dinamicamente.
package br.com.rcr.grafico;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.List;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import br.com.rcr.componentes.Site;
import br.com.rcr.conexao.DesktopConexao;
import br.com.rcr.gerenciador.Gerenciador;
public class PanelSites extends javax.swing.JPanel {
private static final long serialVersionUID = 1L;
private URI teste;
private URI[] sites;
private JButton botao;
private int indicador;
public PanelSites() {
super();
initGUI();
}
private void initGUI() {
try {
setPreferredSize(new Dimension(700, 680));
setBorder(BorderFactory.createTitledBorder("SITES"));
colocarSites();
} catch (Exception e) {
e.printStackTrace();
}
}
//metodo colocarSites para gerar os botoes dinamicamente
private void colocarSites(){
List<Site> lista =
Gerenciador.todos(Site.class);
sites = new URI[lista.size()];
int i = 0;
for (Site site : lista) {
try {
teste = new URI(site.getEndereco());
} catch (URISyntaxException e) {
e.printStackTrace();
}
sites[i] = teste;
botao = new JButton(site.getNome());
add(botao);
i++;
//chamar dinamicamente
selecionar(0);
}
}
//metodo selecionar para selecionar um evento de acordo com o indice
private void selecionar(int indice){
indicador = indice;
botao.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
try {
DesktopConexao.navegar(sites[indicador]);
} catch (IOException e1) {
e1.printStackTrace();
}
}
});
}
}
