简体   繁体   中英

Creating dcheckbox dynamically in Java-NetBeans

I am developing a simple "To-do List" application which involves obtaining 'things to do' for a particular day from the database and displaying them as checkbox text on a panel resting on a frame.There is a button "done" which can be used to remove the ticked checkboxes after a task is complete.

The code that I used for the dynamic creation of the checkboxes is shown below:

//cnt-variable used to store the number of tasks for a day    
//rs1-ResultSet variable into which the task description is read into.    
//DATA-variable with 'to-do' description

 for(int i=0;i<cnt&&rs1.next();i++)
 {
     String s2=rs1.getString("DATA");
     JCheckBox cb = new JCheckBox("New CheckBox");
     cb.setText(s2);
     cb.setVisible(true);

     jPanel1.add(cb);
     jPanel1.validate();
 }

On running the code all it displays is an empty frame with the panel. Could someone help me figure out why the check boxes are not being displayed? Thanks in advance.

Try this. This allows you to create a random number of check boxes...

在此输入图像描述

public class TestCheckboxes {

    public static void main(String[] args) {
        new TestCheckboxes();
    }

    public TestCheckboxes() {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                try {
                    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
                } catch (ClassNotFoundException ex) {
                } catch (InstantiationException ex) {
                } catch (IllegalAccessException ex) {
                } catch (UnsupportedLookAndFeelException ex) {
                }

                JFrame frame = new JFrame();
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.setLayout(new BorderLayout());
                frame.add(new CheckBoxPane());
                frame.setSize(400, 400);
                frame.setLocationRelativeTo(null);
                frame.setVisible(true);
            }

        });
    }

    public class CheckBoxPane extends JPanel {

        private JPanel content;

        public CheckBoxPane() {
            setLayout(new GridBagLayout());
            GridBagConstraints gbc = new GridBagConstraints();
            gbc.gridx = 0;
            gbc.gridy = 0;
            gbc.weightx = 1;
            gbc.weighty = 1;
            gbc.anchor = GridBagConstraints.CENTER;
            content = new JPanel(new GridBagLayout());
            add(content, gbc);

            JButton more = new JButton("More");
            more.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    GridBagConstraints gbc = new GridBagConstraints();
                    gbc.gridx = 0;
                    gbc.gridy = 0;

                    content.removeAll();
                    int count = 10 + (int) Math.round(Math.random() * 90);
                    System.out.println(count);
                    for (int index = 0; index < count; index++) {
                        gbc.gridx++;
                        if (index % 8 == 0) {
                            gbc.gridx = 0;
                            gbc.gridy++;
                        }
                        content.add(new JCheckBox(Integer.toString(index)), gbc);
                    }

                    content.revalidate();
                    repaint();

                }

            });

            gbc.gridy++;
            gbc.weightx = 0;
            gbc.weighty = 0;

            add(more, gbc);
        }
    }
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM