动态生成复选框,Netbeans

动态生成复选框,Netbeans,netbeans,runtime,jcheckbox,Netbeans,Runtime,Jcheckbox,我正在开发一个桌面应用程序,我希望管理员可以选择删除用户,为此我计划,每当管理员单击“删除用户”按钮时,将打开一个新选项卡,其中应显示数据库中所有现有用户的名称复选框(以便他可以同时删除多个用户);所以基本上我需要根据我的数据库生成动态复选框 我使用的是NetBeans7.0.1、JDK1.6和sqlite3 在谷歌上搜索后,我得到了两个与我的问题相匹配的链接: 我试图按照上面的第一个链接的代码,但它不适合我正常工作。我所做的只是在netbeans中创建新的JFrame,并在构造函数中调用一

我正在开发一个桌面应用程序,我希望管理员可以选择删除用户,为此我计划,每当管理员单击“删除用户”按钮时,将打开一个新选项卡,其中应显示数据库中所有现有用户的名称复选框(以便他可以同时删除多个用户);所以基本上我需要根据我的数据库生成动态复选框

我使用的是NetBeans7.0.1、JDK1.6和sqlite3

在谷歌上搜索后,我得到了两个与我的问题相匹配的链接:

我试图按照上面的第一个链接的代码,但它不适合我正常工作。我所做的只是在netbeans中创建新的JFrame,并在构造函数中调用一个方法,该方法根据需要创建复选框,该方法的代码如下:

public class Work extends javax.swing.JFrame {

    /** Creates new form Work */
    public Work() {
        initComponents();
        checks = new java.util.ArrayList<>();
        createCheckboxes();
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">
    private void initComponents() {

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 400, Short.MAX_VALUE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 300, Short.MAX_VALUE)
        );

        pack();
    }// </editor-fold>

    private void createCheckboxes(){
        panel = new javax.swing.JPanel();
        this.add(panel);
        for(int i = 0; i<4; i++){
            javax.swing.JCheckBox box = new javax.swing.JCheckBox("check"+i);
            panel.add(box);
            checks.add(box); 
            panel.revalidate();
            panel.repaint();
        }
        panel.setVisible(true);
      }

    public static void main(String args[]) {
        /* Set the Nimbus look and feel */
        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
        /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
         * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
         */
        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(Work.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(Work.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(Work.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(Work.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //</editor-fold>

        /* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable() {

            public void run() {
                new Work().setVisible(true);
            }
        });
    }
    // Variables declaration - do not modify
    // End of variables declaration
    private java.util.ArrayList <javax.swing.JCheckBox> checks;
    private javax.swing.JPanel panel;
}
公共类工作扩展了javax.swing.JFrame{
/**创建新的表格*/
公共工作(){
初始化组件();
checks=new java.util.ArrayList();
创建复选框();
}
/**此方法从构造函数中调用,以
*初始化表单。
*警告:请勿修改此代码。此方法的内容为
*始终由表单编辑器重新生成。
*/
@抑制警告(“未选中”)
// 
私有组件(){
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
javax.swing.GroupLayout=newjavax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(布局);
layout.setHorizontalGroup(
createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0,400,短。最大值)
);
layout.setVerticalGroup(
createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0,300,短。最大值)
);
包装();
}// 
私有void createCheckBox(){
panel=newjavax.swing.JPanel();
本条添加(面板);

对于(int i=0;i您添加了新的复选框,就好像您的框架使用了一些简单的布局,例如FlowLayout,但是它不是-它使用的是GroupLayout-请参阅生成的initComponents()方法

如果要动态处理框架中的所有组件,可以这样做(最好创建一个空类文件,然后粘贴下面的代码;不要要求NB创建JFrame,因为它会再次创建要在可视化设计器中设计的表单;如果仍然这样做,请右键单击它并将布局更改为更简单的形式):

公共类工作扩展了javax.swing.JFrame{
private java.util.List checks=new java.util.ArrayList();;
公共工作(){
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new java.awt.FlowLayout());//只需将组件相邻放置即可
创建复选框();
}
私有void createCheckBox(){

对于(int i=0;i您添加了新的复选框,就好像您的框架使用了一些简单的布局,例如FlowLayout,但是它不是-它使用的是GroupLayout-请参阅生成的initComponents()方法

如果要动态处理框架中的所有组件,可以这样做(最好创建一个空类文件,然后粘贴下面的代码;不要要求NB创建JFrame,因为它会再次创建要在可视化设计器中设计的表单;如果仍然这样做,请右键单击它并将布局更改为更简单的形式):

公共类工作扩展了javax.swing.JFrame{
private java.util.List checks=new java.util.ArrayList();;
公共工作(){
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new java.awt.FlowLayout());//只需将组件相邻放置即可
创建复选框();
}
私有void createCheckBox(){

对于(int i=0;i要在Netbeans JFrame中动态添加复选框或任何其他组件,需要管理布局管理器,默认情况下Netbeans框架使用自由设计布局,请执行以下步骤:

创建空白JFrame-->向其添加Jpanel-->右键单击面板,选择setLayout并将其更改为GridLayout

现在,我们可以在此面板上自由添加ant组件

也不要放弃添加revalidate()和repaint()方法


这对我很有用。

要在Netbeans JFrame中动态添加复选框或任何其他组件,需要管理布局管理器,默认情况下Netbeans框架使用自由设计布局,请执行以下步骤:

创建空白JFrame-->向其添加Jpanel-->右键单击面板,选择setLayout并将其更改为GridLayout

现在,我们可以在此面板上自由添加ant组件

也不要放弃添加revalidate()和repaint()方法


这对我来说很有效。

我想如果你想创建一个新的复选框时调用下面的函数可能会有所帮助

公共类复选框扩展JFrame{

    //private static final long serialVersionUID = 1L;
    public CheckBox() {

        // set flow layout for the frame
        this.getContentPane().setLayout(new FlowLayout(FlowLayout.TRAILING, 50, 20)); //(default) centered alignment and a default 5-unit horizontal and vertical gap.

        JCheckBox checkBox1 = new JCheckBox("Checkbox 1");
        checkBox1.setSelected(true);

        JCheckBox checkBox2 = new JCheckBox("Checkbox 2", true);

        JCheckBox checkBox3 = new JCheckBox("Checkbox 3");

        // add checkboxes to frame

        add(checkBox1);

        add(checkBox2);
        add(checkBox3);

    }

    private static void createAndShowGUI() {

        //Create and set up the window.

        //JFrame frame = new CreateCheckedUncheckedJCheckBox();

        CheckBox cb = new CheckBox();
        //Display the window.

        cb.pack();



        cb.setVisible(true);

        cb.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    }

    public static void main(String[] args) {

        //Schedule a job for the event-dispatching thread:

        //creating and showing this application's GUI.

        javax.swing.SwingUtilities.invokeLater(new Runnable() {

            @Override
            public void run() {

                createAndShowGUI();

            }
        });
    }

}

我想如果你想创建一个新的复选框时调用下面的函数可能会有所帮助

公共类复选框扩展JFrame{

    //private static final long serialVersionUID = 1L;
    public CheckBox() {

        // set flow layout for the frame
        this.getContentPane().setLayout(new FlowLayout(FlowLayout.TRAILING, 50, 20)); //(default) centered alignment and a default 5-unit horizontal and vertical gap.

        JCheckBox checkBox1 = new JCheckBox("Checkbox 1");
        checkBox1.setSelected(true);

        JCheckBox checkBox2 = new JCheckBox("Checkbox 2", true);

        JCheckBox checkBox3 = new JCheckBox("Checkbox 3");

        // add checkboxes to frame

        add(checkBox1);

        add(checkBox2);
        add(checkBox3);

    }

    private static void createAndShowGUI() {

        //Create and set up the window.

        //JFrame frame = new CreateCheckedUncheckedJCheckBox();

        CheckBox cb = new CheckBox();
        //Display the window.

        cb.pack();



        cb.setVisible(true);

        cb.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    }

    public static void main(String[] args) {

        //Schedule a job for the event-dispatching thread:

        //creating and showing this application's GUI.

        javax.swing.SwingUtilities.invokeLater(new Runnable() {

            @Override
            public void run() {

                createAndShowGUI();

            }
        });
    }

}

谢谢,有一种方法可以在Jframe中动态添加复选框,请参见下文。我在搜索了很多之后得到了这个解决方案,但至少得到了:)@user1932362是的,您可以动态地向JFrame添加复选框,上面的代码显示了它,但是如果您想使用简单的add(Component),您必须按照我所说的将布局从GroupLayout更改为其他布局。谢谢,有一种方法可以在Jframe中动态添加复选框,请参见下文。我在多次搜索后得到了此解决方案,但至少得到了:)@user1932362是的,您可以在Jframe中动态添加复选框,上面的代码显示了这一点,但是如果您想使用简单的添加,您必须将布局从GroupLayout更改为其他内容(组件)。仅当面板已可见时,才需要调用RevValidate。在代码中,您在添加复选框后使其可见。我也会在