为什么在这种情况下卡布局的显示方法不起作用?

问题描述 投票:0回答:1

我正在尝试使用JComboBoxCardLayout在不同的面板之间切换,但是不会发生任何切换。打印ItemSelected显示ItemListener正常工作,并且通过检查next()previous(),...]等其他方法也可以确认卡布局的准确性。

如果有人可以帮助我解决这个问题,我将不胜感激。

public class MyPanel exends JPanel {

public MyPanel() {
    setBodyPanel();
}
private void setBodyPanel() {
    card = new JPanel(new CardLayout());
    cards.add(noBodyPanel);
    cards.add(formPanel);
    cards.add(jsonPanel);
    cards.add(binaryFilePanel);

    String comboBoxItems[] = {"No Body", "Form Data", "JSON", "Binary Data"};
    JComboBox cbBodyType = new JComboBox(comboBoxItems);
    cbBodyType.addItemListener(new ItemListener() {
        @Override
        public void itemStateChanged(ItemEvent e) {
            CardLayout cl = (CardLayout) cards.getLayout();
            if (e.getStateChange() == ItemEvent.SELECTED) {
                cl.show(cards,e.getItem().toString());
                System.out.println(e.getItem().toString());
            }
        }
    });
    JPanel cbPanel = new JPanel();
    cbPanel.add(cbBodyType);
    add(cbPanel,BorderLayout.SOUTH);
    add(cards,BorderLayout.CENTER);
}}

我删除了不必要的代码

我正在尝试使用JComboBox和CardLayout在不同的面板之间切换,但是不会发生任何切换。打印ItemSelected显示出ItemListener正常工作,并且...

java swing layout-manager jcombobox cardlayout
1个回答
0
投票

您需要添加JPanel,其名称与检索时使用的名称相同。这是一个演示它的mre 1

© www.soinside.com 2019 - 2024. All rights reserved.