在java windowbuilder中添加动态复选框

在java windowbuilder中添加动态复选框,java,eclipse,checkbox,dynamic,windowsbuilder,Java,Eclipse,Checkbox,Dynamic,Windowsbuilder,在组合框中选择一个项目后,我想添加一个动态复选框。 我正在eclipse上工作,并在WindowBuilder上设计我的框架 final JComboBox<String> comboBox = new JComboBox<String>(); comboBox.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) {

在组合框中选择一个项目后,我想添加一个动态复选框。 我正在eclipse上工作,并在WindowBuilder上设计我的框架

    final JComboBox<String> comboBox = new JComboBox<String>();
    comboBox.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            String typeName = comboBox.getSelectedItem().toString();
            for (int i = 0; i < SqlQuery.getCoursesName(typeName).size(); i++) {
                JCheckBox c = new JCheckBox(SqlQuery.getCoursesName(typeName).get(i));
                c.setVisible(true);
                coursePanel.add(c);

                frame.repaint();
                frame.validate();

                System.out.println(c.getText());
            }
        }
    });
    comboBox.setBounds(208, 221, 91, 20);
    frame.getContentPane().add(comboBox);
final JComboBox组合框=新JComboBox();
comboBox.addActionListener(新ActionListener(){
已执行的公共无效操作(操作事件e){
字符串typeName=comboBox.getSelectedItem().toString();
for(int i=0;i
编辑:这是我的全部代码。

public class registerForm { 
private JFrame frame;
private JTextField txtFirstName;
private JTextField txtLastName;
private JTextField txtPassword;
private JTextField txtEmail;

List<Integer> coursesId; // ן¿½ן¿½ן¿½ן¿½ן¿½ ן¿½ן¿½ ן¿½ן¿½ן¿½ן¿½ן¿½ ן¿½ן¿½ ן¿½ן¿½ן¿½ן¿½ן¿½ן¿½

/**
 * Launch the application.
 */
public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable() {
        public void run() {
            try {
                registerForm window = new registerForm();
                window.frame.setVisible(true);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    });
}

/**
 * Create the application.
 */
public registerForm() {
    initialize();
}

/**
 * Initialize the contents of the frame.
 */
private void initialize() {
    frame = new JFrame();
    frame.setBounds(100, 100, 450, 442);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.getContentPane().setLayout(null);

    JLabel lblNewLabel = new JLabel("\u05D4\u05E8\u05E9\u05DE\u05D4");
    lblNewLabel.setBounds(165, 11, 91, 29);
    lblNewLabel.setFont(new Font("Tahoma", Font.BOLD, 24));
    frame.getContentPane().add(lblNewLabel);

    JLabel label = new JLabel("\u05E9\u05DD \u05E4\u05E8\u05D8\u05D9:");
    label.setBounds(363, 55, 61, 14);
    label.setFont(new Font("Tahoma", Font.PLAIN, 14));
    frame.getContentPane().add(label);

    txtFirstName = new JTextField();
    txtFirstName.setBounds(75, 51, 221, 20);
    frame.getContentPane().add(txtFirstName);
    txtFirstName.setColumns(10);

    JLabel label_1 = new JLabel("\u05E9\u05DD \u05DE\u05E9\u05E4\u05D7\u05D4:");
    label_1.setBounds(344, 80, 80, 14);
    label_1.setFont(new Font("Tahoma", Font.PLAIN, 14));
    frame.getContentPane().add(label_1);

    txtLastName = new JTextField();
    txtLastName.setBounds(75, 82, 221, 20);
    txtLastName.setColumns(10);
    frame.getContentPane().add(txtLastName);

    txtPassword = new JTextField();
    txtPassword.setBounds(75, 140, 221, 20);
    txtPassword.setColumns(10);
    frame.getContentPane().add(txtPassword);

    JLabel label_2 = new JLabel("\u05DE\u05D9\u05D9\u05DC:");
    label_2.setBounds(392, 110, 32, 14);
    label_2.setFont(new Font("Tahoma", Font.PLAIN, 14));
    frame.getContentPane().add(label_2);

    txtEmail = new JTextField();
    txtEmail.setBounds(75, 109, 221, 20);
    txtEmail.setColumns(10);
    frame.getContentPane().add(txtEmail);

    JLabel label_3 = new JLabel("\u05E1\u05D9\u05E1\u05DE\u05D0:");
    label_3.setBounds(373, 141, 51, 14);
    label_3.setFont(new Font("Tahoma", Font.PLAIN, 14));
    frame.getContentPane().add(label_3);

    final JDateChooser dateChooser = new JDateChooser();
    dateChooser.setBounds(75, 171, 221, 39);
    frame.getContentPane().add(dateChooser);

    JLabel label_4 = new JLabel("\u05EA\u05D0\u05E8\u05D9\u05DA \u05DC\u05D9\u05D3\u05D4:");
    label_4.setBounds(344, 167, 90, 14);
    label_4.setFont(new Font("Tahoma", Font.PLAIN, 14));
    frame.getContentPane().add(label_4);

    JButton btnSend = new JButton("\u05E9\u05DC\u05D7");
    btnSend.setBounds(258, 334, 61, 58);
    btnSend.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {

            // date
            Date date = new Date(dateChooser.getDate().getTime());
        }
    });
    frame.getContentPane().add(btnSend);

    JButton button = new JButton("\u05E0\u05E7\u05D4");
    button.setBounds(175, 334, 61, 58);
    frame.getContentPane().add(button);

    JLabel label_5 = new JLabel("\u05DE\u05D2\u05DE\u05D4:");
    label_5.setFont(new Font("Tahoma", Font.PLAIN, 14));
    label_5.setBounds(382, 218, 42, 14);
    frame.getContentPane().add(label_5);

    final JPanel coursePanel = new JPanel();
    coursePanel.setBounds(10, 249, 286, 74);
    frame.getContentPane().add(coursePanel);
    coursePanel.setLayout(null);

    final JComboBox<String> comboBox = new JComboBox<String>();
    comboBox.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            String typeName = comboBox.getSelectedItem().toString();
            for (int i = 0; i < SqlQuery.getCoursesName(typeName).size(); i++) {
                JCheckBox c = new JCheckBox(SqlQuery.getCoursesName(typeName).get(i));
                int selectedIndex = comboBox.getSelectedIndex();
                boolean isInPanel = c.getParent() == coursePanel;
                if (selectedIndex == 1 && !isInPanel) {
                    coursePanel.add(c);
                    coursePanel.repaint(); //Repaint the proper panel that has this component.
                    coursePanel.revalidate();
                } else if (isInPanel && selectedIndex != 1) {
                    coursePanel.remove(c);
                    coursePanel.repaint(); //Repaint the proper panel that has this component.
                    coursePanel.revalidate();
                }
                coursePanel.repaint();
                coursePanel.validate();

                System.out.println(c.getText());
            }
        }
    });
    comboBox.setBounds(208, 221, 91, 20);
    frame.getContentPane().add(comboBox);
    // fill comboBox
    List<String> lst = SqlQuery.getTypes();
    for (int i = 0; i < lst.size(); i++)
        comboBox.addItem(lst.get(i));

    JLabel label_6 = new JLabel("\u05E9\u05DC\u05D9\u05D8\u05D4 \u05D1\u05E7\u05D5\u05E8\u05E1\u05D9\u05DD");
    label_6.setFont(new Font("Tahoma", Font.PLAIN, 14));
    label_6.setBounds(321, 245, 103, 14);
    frame.getContentPane().add(label_6);



}
公共类注册表执行{
私有JFrame;
私有JTextField txtFirstName;
私有JTextField txtLastName;
私有JTextField txtPassword;
私有JTextField-txtEmail;
列出课程名称;//课程名称/课程名称/课程名称/课程名称/课程名称/课程名称/课程名称/课程名称/课程名称/课程名称/课程名称/课程名称/课程名称/课程名称/课程名称/课程名称/课程名称/课程名称/课程名称/课程名称/课程名称/课程名称/课程名称/课程名称
/**
*启动应用程序。
*/
公共静态void main(字符串[]args){
invokeLater(新的Runnable(){
公开募捐{
试一试{
registerForm窗口=新的registerForm();
window.frame.setVisible(true);
}捕获(例外e){
e、 printStackTrace();
}
}
});
}
/**
*创建应用程序。
*/
公共注册机构(){
初始化();
}
/**
*初始化框架的内容。
*/
私有void初始化(){
frame=新的JFrame();
机架立根(100100450442);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(null);
JLabel lblNewLabel=新的JLabel(“\u05D4\u05E8\u05E9\u05DE\u05D4”);
lblNewLabel.立根(165,11,91,29);
lblNewLabel.setFont(新字体(“Tahoma”,Font.BOLD,24));
frame.getContentPane().add(lblNewLabel);
JLabel标签=新的JLabel(“\u05E9\u05DD\u05E4\u05E8\u05D8\u05D9:”);
标签.立根(363,55,61,14);
label.setFont(新字体(“Tahoma”,Font.PLAIN,14));
frame.getContentPane().add(标签);
txtFirstName=新的JTextField();
txtFirstName.setBounds(75,51,221,20);
frame.getContentPane().add(txtFirstName);
txtFirstName.setColumns(10);
JLabel label_1=新的JLabel(“\u05E9\u05DD\u05DE\u05E9\u05E4\u05D7\u05D4:”);
标签1.立根(344,80,80,14);
标签_1.setFont(新字体(“Tahoma”,Font.PLAIN,14));
frame.getContentPane().add(标签_1);
txtLastName=newjtextfield();
txtLastName.setBounds(75,82,221,20);
txtLastName.setColumns(10);
frame.getContentPane().add(txtLastName);
txtPassword=newjtextfield();
txtPassword.setBounds(7514022120);
txtPassword.setColumns(10);
frame.getContentPane().add(txtPassword);
JLabel label_2=新的JLabel(“\u05DE\u05D9\u05D9\u05DC:”);
标签2.立根(392、110、32、14);
标签_2.setFont(新字体(“Tahoma”,Font.PLAIN,14));
frame.getContentPane().add(标签2);
txtEmail=newjtextfield();
txtEmail.setBounds(75,109,221,20);
txtEmail.setColumns(10);
frame.getContentPane().add(txtEmail);
JLabel label_3=新的JLabel(“\u05E1\u05D9\u05E1\u05DE\u05D0:”);
标签3.立根(373、141、51、14);
标签_3.setFont(新字体(“Tahoma”,Font.PLAIN,14));
frame.getContentPane().add(标签_3);
final JDateChooser dateChooser=新JDateChooser();
dateChooser.setBounds(7517122139);
frame.getContentPane().add(日期选择器);
JLabel label_4=新的JLabel(“\u05EA\u05D0\u05E8\u05D9\u05DA\u05DC\u05D9\u05D3\u05D4:”);
标签4.立根(344167,90,14);
标签_4.setFont(新字体(“Tahoma”,Font.PLAIN,14));
frame.getContentPane().add(标签_4);
JButton btnSend=新JButton(“\u05E9\u05DC\u05D7”);
BTN发送挫折(258、334、61、58);
addActionListener(新的ActionListener(){
已执行的公共无效操作(操作事件e){
//日期
日期日期=新日期(dateChooser.getDate().getTime());
}
});
frame.getContentPane().add(btnSend);
JButton按钮=新JButton(“\u05E0\u05E7\u05D4”);
按钮.立根(175,334,61,58);
frame.getContentPane().add(按钮);
JLabel label_5=新的JLabel(“\u05DE\u05D2\u05DE\u05D4:”);
标签_5.setFont(新字体(“Tahoma”,Font.PLAIN,14));
标签5.立根(382、218、42、14);
frame.getContentPane().add(标签_5);
最终JPanel课程面板=新JPanel();
课程设置(10249286274);
frame.getContentPane().add(coursePanel);
coursePanel.setLayout(空);
最终JComboBox组合框=新JComboBox();
comboBox.addActionListener(新ActionListener(){
已执行的公共无效操作(操作事件e){
字符串typeName=comboBox.getSelectedItem().toString();
for(int i=0;ipackage test;

import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class Test {

    private JFrame frame;
    private JCheckBox checkBox;

    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    Test window = new Test();
                    window.frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the application.
     */
    public Test() {
        frame = new JFrame();
        frame.setPreferredSize(new Dimension(300, 300));
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().add(createPanel());
        frame.pack();
    }

    private JPanel createPanel() {
        JPanel p = new JPanel(new FlowLayout());
        checkBox = new JCheckBox("I am a checkbox"); //Create the checkbox
        JComboBox<String> combo = new JComboBox<>();
        combo.addItem("Hello");
        combo.addItem("Stack");
        combo.addItem("OverFlow");
        combo.addActionListener(e -> {
            //Its better to handle indices when there is not dynmic data to your combobox
            int selectedIndex = combo.getSelectedIndex();
            boolean isInPanel = checkBox.getParent() == p;
            if (selectedIndex == 1 && !isInPanel) {
                p.add(checkBox);
                p.repaint(); //Repaint the proper panel that has this component.
                p.revalidate();
            } else if (isInPanel && selectedIndex != 1) {
                p.remove(checkBox);
                p.repaint(); //Repaint the proper panel that has this component.
                p.revalidate();
            }

        });
        p.add(combo);
        return p;
    }
}
import java.awt.EventQueue;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class registerForm {
    private JFrame frame;
    private JTextField txtFirstName;
    private JTextField txtLastName;
    private JTextField txtPassword;
    private JTextField txtEmail;
    private JCheckBox checkBox;

    List<Integer> coursesId; // ן¿½ן¿½ן¿½ן¿½ן¿½ ן¿½ן¿½ ן¿½ן¿½ן¿½ן¿½ן¿½ ן¿½ן¿½ ן¿½ן¿½ן¿½ן¿½ן¿½ן¿½

    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    registerForm window = new registerForm();
                    window.frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the application.
     */
    public registerForm() {
        initialize();
    }

    /**
     * Initialize the contents of the frame.
     */
    private void initialize() {
        frame = new JFrame();
        frame.setBounds(100, 100, 450, 442);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().setLayout(null);

        JLabel lblNewLabel = new JLabel("\u05D4\u05E8\u05E9\u05DE\u05D4");
        lblNewLabel.setBounds(165, 11, 91, 29);
        lblNewLabel.setFont(new Font("Tahoma", Font.BOLD, 24));
        frame.getContentPane().add(lblNewLabel);

        JLabel label = new JLabel("\u05E9\u05DD \u05E4\u05E8\u05D8\u05D9:");
        label.setBounds(363, 55, 61, 14);
        label.setFont(new Font("Tahoma", Font.PLAIN, 14));
        frame.getContentPane().add(label);

        txtFirstName = new JTextField();
        txtFirstName.setBounds(75, 51, 221, 20);
        frame.getContentPane().add(txtFirstName);
        txtFirstName.setColumns(10);

        JLabel label_1 = new JLabel("\u05E9\u05DD \u05DE\u05E9\u05E4\u05D7\u05D4:");
        label_1.setBounds(344, 80, 80, 14);
        label_1.setFont(new Font("Tahoma", Font.PLAIN, 14));
        frame.getContentPane().add(label_1);

        txtLastName = new JTextField();
        txtLastName.setBounds(75, 82, 221, 20);
        txtLastName.setColumns(10);
        frame.getContentPane().add(txtLastName);

        txtPassword = new JTextField();
        txtPassword.setBounds(75, 140, 221, 20);
        txtPassword.setColumns(10);
        frame.getContentPane().add(txtPassword);

        JLabel label_2 = new JLabel("\u05DE\u05D9\u05D9\u05DC:");
        label_2.setBounds(392, 110, 32, 14);
        label_2.setFont(new Font("Tahoma", Font.PLAIN, 14));
        frame.getContentPane().add(label_2);

        txtEmail = new JTextField();
        txtEmail.setBounds(75, 109, 221, 20);
        txtEmail.setColumns(10);
        frame.getContentPane().add(txtEmail);

        JLabel label_3 = new JLabel("\u05E1\u05D9\u05E1\u05DE\u05D0:");
        label_3.setBounds(373, 141, 51, 14);
        label_3.setFont(new Font("Tahoma", Font.PLAIN, 14));
        frame.getContentPane().add(label_3);


        JLabel label_4 = new JLabel("\u05EA\u05D0\u05E8\u05D9\u05DA \u05DC\u05D9\u05D3\u05D4:");
        label_4.setBounds(344, 167, 90, 14);
        label_4.setFont(new Font("Tahoma", Font.PLAIN, 14));
        frame.getContentPane().add(label_4);


        JButton button = new JButton("\u05E0\u05E7\u05D4");
        button.setBounds(175, 334, 61, 58);
        frame.getContentPane().add(button);

        JLabel label_5 = new JLabel("\u05DE\u05D2\u05DE\u05D4:");
        label_5.setFont(new Font("Tahoma", Font.PLAIN, 14));
        label_5.setBounds(382, 218, 42, 14);
        frame.getContentPane().add(label_5);

        final JPanel coursePanel = new JPanel();
        coursePanel.setBounds(10, 249, 286, 74);
        frame.getContentPane().add(coursePanel);
        coursePanel.setLayout(null);
        List<String> lst = new ArrayList<>();
        lst.add("Hello");
        lst.add("Stack");
        lst.add("Over");
        lst.add("Flow");
        //Prepare the checkBox
        checkBox = new JCheckBox("nothing");
        final JComboBox<String> comboBox = new JComboBox<String>();
        comboBox.addActionListener(new ActionListener() {


            public void actionPerformed(ActionEvent e) {
                String typeName = comboBox.getSelectedItem().toString();
                for (int i = 0; i < lst.size(); i++) {
                    checkBox.setText(typeName);
                    //set the same bounds as comboBox but reduce its X by 80.
                    //Compare checkBoxbounds and combobox bounds
                    //Remind: setBounds is baaaaad practice.
                    checkBox.setBounds(128, 221, 91, 20);
                    //if you want to add it in coursePanel, change all frame.getContentPane() to coursePanel
                    int selectedIndex = comboBox.getSelectedIndex();
                    boolean isInPanel = checkBox.getParent() == frame.getContentPane(); 
                    if (selectedIndex == 1 && !isInPanel) {

                        frame.getContentPane().add(checkBox);
                    } else if (isInPanel && selectedIndex != 1) {
                        frame.getContentPane().remove(checkBox);
                    }
                    frame.getContentPane().repaint();
                    frame.getContentPane().validate();

                    System.out.println(checkBox.getText());
                }
            }
        });
        comboBox.setBounds(208, 221, 91, 20);
        frame.getContentPane().add(comboBox);
        // fill comboBox

        for (int i = 0; i < lst.size(); i++)
            comboBox.addItem(lst.get(i));

        JLabel label_6 = new JLabel("\u05E9\u05DC\u05D9\u05D8\u05D4 \u05D1\u05E7\u05D5\u05E8\u05E1\u05D9\u05DD");
        label_6.setFont(new Font("Tahoma", Font.PLAIN, 14));
        label_6.setBounds(321, 245, 103, 14);
        frame.getContentPane().add(label_6);

    }
}