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
Esse produto está em que tipo de elemento?
jLabel
Por que não troca para JButton? Seria o mais adequado, não?
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 ?
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”);
}
}
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.
Sim eu fiz isso
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");
}
}
Mais ou menos isso.
Troque os ifs por switch. Mais elegante
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
Foi ai que pensei no Array list percorrendo ate o if bater ? ou vc pensou de outra forma ?
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).
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;
}
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 ?
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.
Sim serão dinamicos
Map<String, Produto> prods = new HashMap<String, Produto>();
//Cada JButton criado
prods.put(produto.getNome(), produto);
btnProduto.setActionCommand(produto.getNome());
darlan_machado quando vc tiver um tempo pode me ajudar via teamviewer eu preciso muito disso e acho que não entendi muito bem
Se consegue ou não ?