1

我正在开发一个简单的“待办事项列表”应用程序,该应用程序涉及从数据库中获取特定日期的“待办事项”,并将它们显示为位于框架上的面板上的复选框文本。有一个“完成”按钮可以用于在任务完成后删除勾选的复选框。

我用于动态创建复选框的代码如下所示:

//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();
 }

在运行代码时,它只显示一个带有面板的空框架。有人可以帮我弄清楚为什么没有显示复选框吗?提前致谢。

4

1 回答 1

3

试试这个。这允许您创建随机数量的复选框...

在此处输入图像描述

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);
        }
    }
}
于 2012-10-16T08:42:36.913 回答