【问题标题】:Java ActionListener issuesJava ActionListener 问题
【发布时间】:2014-05-02 12:54:05
【问题描述】:

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

            }
        }



    });

当挑选的飞行员只出现jcheckbox shuold。 当挑选的主机只出现JradioButton Shuold。 选择 Office 时不会出现任何内容。

问题是当我选择主机,然后飞行员,然后主机它不显示 JRadioButton。

感谢您的帮助。

【问题讨论】:

    标签: java swing actionlistener jcombobox


    【解决方案1】:
    • 您必须告诉LayoutManager 某些内容发生了变化,LayoutManager 没有任何通知,您必须以编程方式通知此更改

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

    • 使用CardLayout 在视图之间切换(在您的情况下为JPanels)

    【讨论】:

      猜你喜欢
      • 2013-04-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-29
      • 1970-01-01
      相关资源
      最近更新 更多