Java ActionListener问题

Java ActionListener问题,java,swing,actionlistener,jcombobox,Java,Swing,Actionlistener,Jcombobox,我创建了一个框架。框架内有一个组合框。 我试图让组合框中的每个选项都创建其他内容(JCheckBox、JRadioButton) 当选择飞行员时,只有JCheckBox shuold出现。 拾取主机时,仅会显示JRadioButton shuold。 被选中的办公室里什么都没出现 问题是,当我选择host,然后pilot,然后host时,它不会显示JRadioButton comboBox.addActionListener(new ActionL

我创建了一个框架。框架内有一个组合框。 我试图让组合框中的每个选项都创建其他内容(JCheckBox、JRadioButton)

当选择飞行员时,只有JCheckBox shuold出现。 拾取主机时,仅会显示JRadioButton shuold。 被选中的办公室里什么都没出现

问题是,当我选择host,然后pilot,然后host时,它不会显示JRadioButton

                        comboBox.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent event) {


            String selection = comboBox.getSelectedItem().toString();
            label3.setText(input[comboBox.getSelectedIndex()]);


            //panel_mid.removeAll();


            if(comboBox.getSelectedItem().toString().equals("Pilot")){
                panel_mid.removeAll();
                panel_mid.add(label3,BorderLayout.WEST);
                panel_mid.add(text_bottom);
                panel_mid.setBorder(new TitledBorder(comboBox.getSelectedItem().toString() + " options"));
                panel_mid.add(jchkCaptain);


            }

            if(comboBox.getSelectedItem().toString().equals("Host")){
                panel_mid.removeAll();
                panel_mid.add(label3,BorderLayout.WEST);
                panel_mid.add(text_bottom);
                panel_mid.setBorder(new TitledBorder(comboBox.getSelectedItem().toString() + " options"));

                panel_mid.add(regular = new JRadioButton("Regular"));
                panel_mid.add(bachir = new JRadioButton("Bachir"));
                panel_mid.add(calcelan = new JRadioButton("Calcelan"));

            }
            if(comboBox.getSelectedItem().toString().equals("Office")){
                panel_mid.removeAll();
                panel_mid.add(label3,BorderLayout.WEST);
                panel_mid.add(text_bottom);
                panel_mid.setBorder(new TitledBorder(comboBox.getSelectedItem().toString() + " options"));

            }
        }



    });
谢谢你的帮助。

  • 您必须告诉
    LayoutManager
    某些内容已更改,
    LayoutManager
    没有任何通知者,您必须通过编程通知这些更改

  • 使用
    container.revalidate()
    container.repaint(本例中JPanels的变量)
    作为最后一行代码,在对已经可见的Swing GUI进行所有更改后仅使用一次

  • 用于在视图之间切换(
    JPanel
    s在您的案例中)