.
Salve, Salve rapaziada.
Sou iniciante na parte de swing e estou com uma dúvida.
Tenho uma aplicação com varios checkboxes e preciso saber como faço para
capturar as informações selecionadas através do evento do JButton
CyberX.
.
Salve, Salve rapaziada.
Sou iniciante na parte de swing e estou com uma dúvida.
Tenho uma aplicação com varios checkboxes e preciso saber como faço para
capturar as informações selecionadas através do evento do JButton
CyberX.
Segue o código:
public static void main(String args[]) {
String title = "Checkbox Sample";
JFrame frame = new JFrame(title);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel(new GridLayout(0, 1));
Border border = BorderFactory.createTitledBorder("Pizza Toppings");
panel.setBorder(border);
JCheckBox check = new JCheckBox("Anchovies");
panel.add(check);
check = new JCheckBox("Garlic");
panel.add(check);
check = new JCheckBox("Onions");
panel.add(check);
check = new JCheckBox("Pepperoni");
panel.add(check);
check = new JCheckBox("Spinach");
panel.add(check);
JButton button = new JButton("Show selected");
button.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
// Capturar checkbox selecionados com JButton
}
});
Container contentPane = frame.getContentPane();
contentPane.add(panel, BorderLayout.CENTER);
contentPane.add(button, BorderLayout.SOUTH);
frame.setSize(300, 200);
frame.setVisible(true);
}
[quote=CyberX]Segue o código:
[code]
public static void main(String args[]) {
String title = “Checkbox Sample”;
JFrame frame = new JFrame(title);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel(new GridLayout(0, 1));
Border border = BorderFactory.createTitledBorder(“Pizza Toppings”);
panel.setBorder(border);
JCheckBox check = new JCheckBox("Anchovies");
panel.add(check);
check = new JCheckBox("Garlic");
panel.add(check);
check = new JCheckBox("Onions");
panel.add(check);
check = new JCheckBox("Pepperoni");
panel.add(check);
check = new JCheckBox("Spinach");
panel.add(check);
JButton button = new JButton("Show selected");
button.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
// Capturar checkbox selecionados com JButton
}
});
Container contentPane = frame.getContentPane();
contentPane.add(panel, BorderLayout.CENTER);
contentPane.add(button, BorderLayout.SOUTH);
frame.setSize(300, 200);
frame.setVisible(true);
}
[/code][/quote]
Someone ???
[quote=CyberX][quote=CyberX]Segue o código:
public static void main(String args[]) {
String title = "Checkbox Sample";
JFrame frame = new JFrame(title);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel(new GridLayout(0, 1));
Border border = BorderFactory.createTitledBorder("Pizza Toppings");
panel.setBorder(border);
JCheckBox check = new JCheckBox("Anchovies");
panel.add(check);
check = new JCheckBox("Garlic");
panel.add(check);
check = new JCheckBox("Onions");
panel.add(check);
check = new JCheckBox("Pepperoni");
panel.add(check);
check = new JCheckBox("Spinach");
panel.add(check);
JButton button = new JButton("Show selected");
button.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
// Capturar checkbox selecionados com JButton
}
});
Container contentPane = frame.getContentPane();
contentPane.add(panel, BorderLayout.CENTER);
contentPane.add(button, BorderLayout.SOUTH);
frame.setSize(300, 200);
frame.setVisible(true);
}
[/code][/quote][/quote]
Desse jeito não vale o esforço.
Olhe isso...
[code]import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.GridLayout;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.Border;
public class Main {
public static void main(String args[]) {
String title = "Checkbox Sample";
JFrame frame = new JFrame(title);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel(new GridLayout(0, 1));
Border border = BorderFactory.createTitledBorder("Pizza Toppings");
panel.setBorder(border);
JCheckBox check1 = new JCheckBox("Anchovies");
panel.add(check1);
JCheckBox check2 = new JCheckBox("Garlic");
panel.add(check2);
JCheckBox check3 = new JCheckBox("Onions");
panel.add(check3);
JCheckBox check4 = new JCheckBox("Pepperoni");
panel.add(check4);
JCheckBox check5 = new JCheckBox("Spinach");
panel.add(check5);
JButton button = new JButton("Show selected");
button.addActionListener(new MyActionListener(check1, check2, check3, check4, check5));
Container contentPane = frame.getContentPane();
contentPane.add(panel, BorderLayout.CENTER);
contentPane.add(button, BorderLayout.SOUTH);
frame.setSize(300, 200);
frame.setVisible(true);
}
}
e
[code]import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JCheckBox;
import javax.swing.JOptionPane;
class MyActionListener implements ActionListener{
private JCheckBox check1;
private JCheckBox check2;
private JCheckBox check3;
private JCheckBox check4;
private JCheckBox check5;
public MyActionListener(JCheckBox check1, JCheckBox check2, JCheckBox check3, JCheckBox check4, JCheckBox check5) {
this.check1 = check1;
this.check2 = check2;
this.check3 = check3;
this.check4 = check4;
this.check5 = check5;
}
@Override
public void actionPerformed(ActionEvent arg0) {
if(this.check1.isSelected()){
JOptionPane.showMessageDialog(null, "CheckBox 1: " + check1.getText() + " selecionado.");
}
if(this.check2.isSelected()){
JOptionPane.showMessageDialog(null, "CheckBox 2: " + check2.getText() + " selecionado.");
}
if(this.check3.isSelected()){
JOptionPane.showMessageDialog(null, "CheckBox 3: " + check3.getText() + " selecionado.");
}
if(this.check4.isSelected()){
JOptionPane.showMessageDialog(null, "CheckBox 4: " + check4.getText() + " selecionado.");
}
if(this.check5.isSelected()){
JOptionPane.showMessageDialog(null, "CheckBox 5: " + check5.getText() + " selecionado.");
}
}
}[/code]
Tks Rafael_Leal mas tenho 2 dúvidas:
1st > É necessário criar uma referência para cada CheckBox ?
JCheckBox check1 = new JCheckBox("Anchovies");
panel.add(check1);
JCheckBox check2 = new JCheckBox("Garlic");
panel.add(check2);
JCheckBox check3 = new JCheckBox("Onions");
panel.add(check3);
JCheckBox check4 = new JCheckBox("Pepperoni");
panel.add(check4);
JCheckBox check5 = new JCheckBox("Spinach");
panel.add(check5);
2nd - Será que não seria possível exibir apartir de uma referência apenas ?
JCheckBox check = new JCheckBox("Anchovies");
panel.add(check);
check = new JCheckBox("Garlic");
panel.add(check);
check = new JCheckBox("Onions");
panel.add(check);
check = new JCheckBox("Pepperoni");
panel.add(check);
check = new JCheckBox("Spinach");
panel.add(check);
PS: Estou perguntando pois não entendo muito bem de Swing, OK !?!?
Waiting…
Essa solução que postou já havia desenvolvido, com esse mesmo conceito.
Segue a análogia da solução.
See
private static String cars[]={"Ferrari F500", "Lamborghini Gallardo","Porche Carrera", "Chevrolet Camaro"};
private static JCheckBox checkBox[] = new JCheckBox[cars.length];
public static void main(String[] args) {
JPanel panel = new JPanel(new GridLayout(0, 1));
Border border = BorderFactory.createTitledBorder("Cars");
panel.setBorder(border);
for(int i = 0; i < checkBox.length; i++) {
checkBox[i] = new JCheckBox(cars[i]);
panel.add(checkBox[i]);
}
JButton button = new JButton("Submit");
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
for (int i = 0; i < checkBox.length; i++) {
if(checkBox[i].isSelected())
System.out.println(checkBox[i].getText());
}
}
});
panel.add(button);
layoutConstructor(panel);
}
/**
* @Method layoutConstructor responsible to create the layout of interface.
* @param panel - Parameter panel to create the panel.
*/
private static void layoutConstructor(JPanel panel){
JFrame frame = new JFrame("Eg: CheckBox Cars");
Container container = frame.getContentPane();
container.add(panel, BorderLayout.CENTER);
frame.pack();
frame.setLocation(500, 250);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
[quote=CyberX]Tks Rafael_Leal mas tenho 2 dúvidas:
1st > É necessário criar uma referência para cada CheckBox ?
JCheckBox check1 = new JCheckBox("Anchovies");
panel.add(check1);
JCheckBox check2 = new JCheckBox("Garlic");
panel.add(check2);
JCheckBox check3 = new JCheckBox("Onions");
panel.add(check3);
JCheckBox check4 = new JCheckBox("Pepperoni");
panel.add(check4);
JCheckBox check5 = new JCheckBox("Spinach");
panel.add(check5);
[/quote]
Não mas é recomendável. Por quê? Pois se em algum momento você precisar do valor de um checkBox você não precisará de fazer marabarismos como esses?
[code]for(Compnent c : jPanel_SeuPanel.getComponents()){
if(c instanceOf JCheckBox){
//e ainda verifica se é esse checkBox que você quer obter o valor…
}
}[/code]
[quote=CyberX]
2nd - Será que não seria possível exibir apartir de uma referência apenas ?
JCheckBox check = new JCheckBox("Anchovies");
panel.add(check);
check = new JCheckBox("Garlic");
panel.add(check);
check = new JCheckBox("Onions");
panel.add(check);
check = new JCheckBox("Pepperoni");
panel.add(check);
check = new JCheckBox("Spinach");
panel.add(check);
PS: Estou perguntando pois não entendo muito bem de Swing, OK !?!?
Waiting…[/quote]
Respondido acima.
Depois jeito você terá que perguntar o Panel ou Frame que são seus componetes e verificar se o componente eu um checkBox e se ainda é o checkBox que você precisa.
[quote=CyberX]Essa solução que postou já havia desenvolvido, com esse mesmo conceito.
Segue a análogia da solução.
See
[code]
private static String cars[]={"Ferrari F500", "Lamborghini Gallardo","Porche Carrera", "Chevrolet Camaro"};
private static JCheckBox checkBox[] = new JCheckBox[cars.length];
public static void main(String[] args) {
JPanel panel = new JPanel(new GridLayout(0, 1));
Border border = BorderFactory.createTitledBorder("Cars");
panel.setBorder(border);
for(int i = 0; i < checkBox.length; i++) {
checkBox[i] = new JCheckBox(cars[i]);
panel.add(checkBox[i]);
}
JButton button = new JButton("Submit");
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
for (int i = 0; i < checkBox.length; i++) {
if(checkBox[i].isSelected())
System.out.println(checkBox[i].getText());
}
}
});
panel.add(button);
layoutConstructor(panel);
}
/**
* @Method layoutConstructor responsible to create the layout of interface.
* @param panel - Parameter panel to create the panel.
*/
private static void layoutConstructor(JPanel panel){
JFrame frame = new JFrame("Eg: CheckBox Cars");
Container container = frame.getContentPane();
container.add(panel, BorderLayout.CENTER);
frame.pack();
frame.setLocation(500, 250);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
[/code][/quote]
±
Nome que ActionListener ele não conhece os checkBoxs s só sabe fazer uma função especifica para eles…
Imagine o caso que: “Eu preciso que os checkBox 1 e 3 o checkBox 5 também deverá AUTOMATICAMENTE ser preenchido enquando 2 e 4 des-selecionados.”…
Na minha solução seria tranquilo…
if(check1.isSelected() && check.isSelected()){
check5.setSelected(true);
check4.setSelected(false);
check2.setSelected(false);
}
No seu exemplo iria ser mais tenso!
Agora consegui compreender, a real necessidade desse tipo de conceito.
Valeu mesmo por solucionar minha dúvida que persistia por um tempo.
Tks.