RESOLVIDO AJUDA pega click do botão

23 respostas
Felipe_Martins1

Pessoal estou com uma duvida eu quero clicar na categoria e pegar o id do produto
exibindo esse jRadioButton da certo faço um for e percorro ate achar o que esta marcado e dentro da propriedade dele eu tenho escrito o ID que eu coloquei a cor de brando para não exibir
mas eu queria eliminar esse radiobuttton e deixar so para clicar no produto alguma ideia

23 Respostas

darlan_machado

Esse produto está em que tipo de elemento?

Felipe_Martins1

jLabel

darlan_machado

Por que não troca para JButton? Seria o mais adequado, não?

Felipe_Martins1

uai pode ser, tava pensando adicionar todos os buttons criados em uma ArrayList

depois percorrer o name de cada um e dentro desse loop ter um if(botaodalista.getSource())
sera que da ?

Felipe_Martins1

na verdade seria assim

public void actionPerformed(ActionEvent e) {

if (e.getSource() == b1) {

System.out.println(B1);

} else if (e.getSource() == b2) {

System.out.println(B2);

}

}
darlan_machado

Para que tanta complicação?
Se você estudar um pouco mais a fundo, vai descobrir que pode, a partir de vários JButton, chamar o mesmo listener.
A partir disso, você pega a action (basicamente o nome do botão) e verifica qual é o produto.

Felipe_Martins1

Sim eu fiz isso

Felipe_Martins1

darla_machado vc diz fazer algo assim ?

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JOptionPane;

public class ButtonHandler implements ActionListener {
private JButton ok, cancela;

public ButtonHandler(JButton ok, JButton cancela){
	this.ok = ok;
	this.cancela = cancela;
}

public void actionPerformed(ActionEvent evento) {
	if(evento.getSource() == ok)
			JOptionPane.showMessageDialog(null, "O botão OK foi clicado");
		
	if(evento.getSource() == cancela)
		JOptionPane.showMessageDialog(null, "O botão CANCELA foi clicado");
}

}

darlan_machado

Mais ou menos isso.
Troque os ifs por switch. Mais elegante

Felipe_Martins1

Mas seguinte tenho uma duvida como eu vou fazer esse if(evento.getSource() == ok)
porque esses botão não são estaticos são dinamicos uma hora em so 3 outra hora vem 10 depende do cadastro de categorias

Felipe_Martins1

Foi ai que pensei no Array list percorrendo ate o if bater ? ou vc pensou de outra forma ?

darlan_machado

Deixa eu ver se eu lembro, faz anos que não brinco com swing.
O objeto de ActionEvent possui um método, o getActionCommand(), ele retorna o actionCommand do elemento que requisitou a ação.
Então, para cada JButton, você pode definir o actionCommand específico e, então, validar no switch qual foi o botão que fez a chamada (obtendo, assim, o produto selecionado).

Exemplo

darlan_machado

Pensei de outra forma, o array é muito complexo.

Eu faria algo como

JButton prd1 = new JButton();
prd1.addActionListener(oTalDoListenerQueFalei);
prd1.setActionCommand("produto1");

JButton prd2 = new JButton();
prd2.addActionListener(oTalDoListenerQueFalei);
prd2.setActionCommand("produto2");

//E no eventlistener
String cmd = event.getActionCommand();
switch(cmd) {
    case "produto1":
       //Faz algo
      break;
    case "produto2":
       //Faz outro algo
      break;
}
Felipe_Martins1

Só que darlan eu entendi so que aqui String cmd = event.getActionCommand(); eu estou pegando
O ActionComand do que foi clicado ate ai tudo bem mas nessa parte do case “produto1” como vou obter cada botão para comparar com o String cmd ?

darlan_machado

Esses botões serão dinâmicos?
Se sim, você pode criar um mapa onde o actionCommand será a chave e o produto pode ser o valor. Aí, quando você ler essa informação, faz um get no map e obtém o produto em questão.

Felipe_Martins1

Sim serão dinamicos

darlan_machado
Map<String, Produto> prods = new HashMap<String, Produto>();
//Cada JButton criado

prods.put(produto.getNome(), produto);
btnProduto.setActionCommand(produto.getNome());

Felipe_Martins1

darlan_machado quando vc tiver um tempo pode me ajudar via teamviewer eu preciso muito disso e acho que não entendi muito bem

Felipe_Martins1

Se consegue ou não ?

darlan_machado

Cara, sinceramente, não.
Eu não sou consultor, faz mais de 2 anos que não dou aulas e não vou dispor do meu tempo para isso.
Além disso, talvez você ache que o valor que eu cobraria por hora de consultoria seria alto demais.

Felipe_Martins1

Mano ja consegui teta fiz de uma forma mais correta aqui, não seria aula pois disponibilizo meu precioso tem sempre ajudando quem precisa de ajuda pois todos nos precisamos um dia, mas obrigado bom descanso para você

Felipe_Martins1

darlan_machado

Todo mundo precisa de ajuda e todo mundo precisa aprender a programar.
Eu ajudo, respondo aqui, não é mesmo?
Agora, acessar a tua máquina via team_viewer, mostrar detalhes, ensinar isso ou aquilo, é sim, uma aula. Vai a um advogado e pergunta para ele qualquer coisa, ele vai cobrar a hora dele. É simples.

Conseguiu fazer a tela, pow, maravilha. Se você se esforçar um pouco mais, consegue resolver e fazer do modo que sugeri.

Criado 27 de fevereiro de 2018
Ultima resposta 27 de fev. de 2018
Respostas 23
Participantes 2