Olá pessoal,
Estou com uma dúvida de como fazer uma função do meu software.
preciso procurar no banco algumas informações e dependendo da quantidade de
registros que a tabela me retornar eu criaria checkBox para essas informações.
EX:
Connection con=new Conexao_Central().Conexao();
try{
Statement stm=con.createStatement();
//variável para incrementar o nome do checkbox
int cont=1;
ResultSet rs=stm.executeQuery("select sum(*) from pdv");
while(rs.next()){
//nome padrão dos check's
JCheckBox nomecheck = "check"+cont++; //isso que não funciona, dar um valor para o nome
nomecheck= new JCheckBox();
//no set bounds tbm vai ser feito um incremento
nomecheck.setBounds(49, 156, 97, 23);
contentPane.add(nomecheck);
}
con.close();
}catch(Exception e1){
System.out.println("Erro: " + e1.getMessage());
}
O Problema: para adicionar vários pelo código que adicionei teria que incrementar o nome de cada checkBox.
mas como esperado ele não deixa por causa dos tipos string e JcheckBox são diferentes.
Se alguém tem alguma ideia, ou já fez algo assim…
obs: o try ta aparecendo só “ry”, no meu código ta correto.
Se você tem uma coleção de componentes (como JCheckBox ou JTextField) que foi criada dinamicamente em um JFrame ou JPanel, crie uma variável membro no seu JFrame, como List chexboxes = new ArrayList() , e então adicione os combos a essa lista.
Não largue os checkboxes soltos (como você está tentando fazer) porque senão você não consegue achá-los mais
“min ter” é coisa de índio de filme americano. De qualquer maneira, rode este exemplo e veja como é que é fácil você adicionar checkboxes dinamicamente. (A propósito, eu não pus um JScrollPane nesse exemplo, mas acho que seria necessário se você precisar mostrar muitos dados. )
package guj;
import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
public class AdicionarCheckboxesDinamicamenteFrame extends JFrame {
private JPanel contentPane;
private JPanel panel;
private JPanel panel_1;
private JButton btnAdicionarCheckbox;
private JButton btnRemoverCheckbox;
private JButton btnRemoverTodos;
private List<JCheckBox> checkboxes = new ArrayList<JCheckBox>();
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
AdicionarCheckboxesDinamicamenteFrame frame = new AdicionarCheckboxesDinamicamenteFrame();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public AdicionarCheckboxesDinamicamenteFrame() {
setTitle("Adicionar Checkboxes Dinamicamente");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
contentPane.setLayout(new BorderLayout(0, 0));
setContentPane(contentPane);
contentPane.add(getPanel(), BorderLayout.CENTER);
contentPane.add(getPanel_1(), BorderLayout.SOUTH);
}
private JPanel getPanel() {
if (panel == null) {
panel = new JPanel();
panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
}
return panel;
}
private JPanel getPanel_1() {
if (panel_1 == null) {
panel_1 = new JPanel();
panel_1.add(getBtnAdicionarCheckbox());
panel_1.add(getBtnRemoverCheckbox());
panel_1.add(getBtnRemoverTodos());
}
return panel_1;
}
private int indiceCheckbox = 0;
private JButton getBtnAdicionarCheckbox() {
if (btnAdicionarCheckbox == null) {
btnAdicionarCheckbox = new JButton("Adicionar Checkbox");
btnAdicionarCheckbox.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
JCheckBox checkBox = new JCheckBox();
indiceCheckbox++;
checkBox.setText(String.format("Combo id # %d", indiceCheckbox));
panel.add(checkBox); // adiciona o componente criado ao panel...
checkboxes.add(checkBox); // e à lista
panel.validate();
panel.repaint(); // redesenha o painel para mostrar o novo checkbox
}
});
}
return btnAdicionarCheckbox;
}
private JButton getBtnRemoverCheckbox() {
if (btnRemoverCheckbox == null) {
btnRemoverCheckbox = new JButton("Remover Checkbox");
btnRemoverCheckbox.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (checkboxes.size() > 0) {
// Vamos remover o último, por exemplo
// Primeiramente vamos achar o último elemento...
JCheckBox checkBox = checkboxes.get(checkboxes.size() - 1);
// Agora vamos removê-lo do panel...
panel.remove(checkBox);
// e da lista também!
checkboxes.remove(checkBox);
panel.validate();
panel.repaint();
}
}
});
}
return btnRemoverCheckbox;
}
private JButton getBtnRemoverTodos() {
if (btnRemoverTodos == null) {
btnRemoverTodos = new JButton("Remover Todos");
btnRemoverTodos.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
for (JCheckBox checkbox : checkboxes) {
panel.remove(checkbox); // remove os componentes do panel
}
checkboxes.clear(); // limpa a lista
panel.validate();
panel.repaint(); // redesenha o painel para mostrar o novo checkbox
}
});
}
return btnRemoverTodos;
}
}