Eu to achando que o meu problema é um pouco diferente..
Vou tentar mostrar um trecho do código para ver se fica mais claro.
Essa é parte da classe TrataSocket que dispara uma thread e fica ouvindo uma porta e caso algum cliente
se conecte..ela é responsável por receber as mensagens e os respectivos ips das máquinas como neste trecho abaixo:
private ArrayList<String> ips_clientes = new ArrayList<String>();
ips_clientes.add(pacoteRecebido.getAddress().getHostAddress());
ips = new TreeSet<String>(ips_clientes);
public Set<String> Captura(){
return ips;
}
Agora na Classe TelaPrincipal eu tenho um JPanel e alguns botoes que por exemplo quando eu clicar nesse botão
"Mostrar" ele vai criar novos JButtons de acordo com o número de conexões de clientes que eu tiver e cada JButton
terá como atributo setText o endereço ip daquela máquina. Bom, isso é o que deveria acontecer, mas cada vez que eu clico em
"Mostrar" ele repete todos que já tinham, duplicando-os.
private void buMostrarActionPerformed(java.awt.event.ActionEvent evt) {
try {
Set<String> ips = ts.Captura();
for(String s:ips)
this.MostraMaquinas(s);
} catch (Exception ex) {
ex.printStackTrace();
}
}
private void MostraMaquinas(String ip_cliente) {
JButton buAcao = new JButton();
buAcao.setText(ip_cliente);
buAcao.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
buAcao_action(evt);
}
});
lista.add(buAcao);
paCentro.add(buAcao);
paCentro.updateUI();
paCentro.repaint();
}
É isso que eu gostaria de saber como eu poderia fazer para que não houvesse essa repetição ?
Obrigado pela ajuda