Java ActionListener问题

时间:2014-05-02 12:54:06

标签: java swing actionlistener jcombobox

我创建了一个框架。在框架内有一个组合框。 我正在尝试组合框中的每个选项都会创建其他东西(JCheckBox,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"));

            }
        }



    });

选择Pilot时,仅出现JCheckBox shuold。 挑选时主机只出现JRadioButton shuold。 当被选中时,没有什么人会出现。

问题是当我选择主机然后导航然后主持它并不显示JRadioButton。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

  • 您必须告诉LayoutManager某些内容已被更改,LayoutManager没有任何通知程序,您必须以编程方式通知此更改

  • 在完成对已经可见的Swing GUI的所有更改后,只使用container.revalidate()container.repaint(variable for JPanels in your case)作为最后一行代码

  • 使用CardLayout来切换视图(在您的情况下为JPanel