Dúvida sobre Jbutton

4 respostas
Alchemist

Pessoal estou com uma duvida se é possivel e de como montar se for possivel,

Tenho uma classe alunos blz… eu vou criar dinamicamente um array que guardará objetos alunos dentro dela, até ai blzoca, ao mesmo tempo que eu crio os meus objetos alunos e coloco no meu array eu quero criar um Jbutton para cada objeto aluno que eu criei… e ao clicar nele eu vou poder acesar as informações do objeto aluno que está ligado a ele…

Como eu faço para o meu botão guardar a referença do objeto aluno ?

4 Respostas

dreamspeaker

O, “Alchemist”, isso ai ta meio confuso, nao ta nao?

[piada interna ON]Faz o seguinte, leva um doce pro Walt que ele te explica uma forma melhor de fazer isso[piada interna OFF]

rs… abracos. De longe, agora.

CrOnNoS

Crie também um array de JButton de mantenha uma relação entre ele e o array de alunos, como “Aluno na posição 1 do array” vai referir ao “Botão 1 do array de botões”
Depois você cria um ActionListener único para todos os JButton onde você busca o botão pressionado (e.getSource()) no array de botões, e obtém o index daquele botão que conseqüentemente seria o index do Aluno no array de alunos.

Alchemist

hahahah danadinho hien dreamspeaker XD

[OFF]valt manou um beijo[/OFF]

CrOnNoS usei está tatica mesmo… XD tinha dado uma viajada grande na ideia XD valeu !!

ViniGodoy

Cria um action listener, que receba um aluno como parâmetro, e que abra o seu form de detalhes do aluno:

public class AbrirDadosAlunoActionListener {
   private Aluno aluno;
   public AbrirDadosAlunoActionListener(Aluno aluno) {
      this.aluno = aluno;
   }

   public void actionPerformed(ActionEvent e) {
      FormDetalheAluno form = new FormDetalheAluno(aluno);
      form.setVisible(true);
   }
}

Depois, é só criar os botões:

for (Aluno a : alunos) {
   JButton btnDetalhes = new JButton("Detalhes");
   btnDetalhes.addActionListener(new AbrirDadosAlunoActionListener(a));
   pnlAluno.add(btnDetalhes);
}

Assim vc não precisa ficar criando arrays por aí, ou ficar testando coisas com "evt.getSource()", ou percorrer listas em buscas de índices.
Não se esqueça que os listeners também são objetos, e podem guardar referências.

Todos os botões compartilharem uma única instância de listener, que testa contra getSource() geralmente é uma má idéia. Não só torna o código rebuscado, cheio de ifs, ou operações desnecessárias, como também vai contra o próprio princípio pelo qual listeners existem em primeiro lugar. Pense sempre umas duas ou três vezes antes de fazer isso, pois geralmente usar os listeners de maneira orientada a objetos é uma alternativa melhor.

Criado 23 de novembro de 2009
Ultima resposta 24 de nov. de 2009
Respostas 4
Participantes 4