我正在尝试使用JComboBox
和CardLayout
在不同的面板之间切换,但是不会发生任何切换。打印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正常工作,并且...
您需要添加JPanel
,其名称与检索时使用的名称相同。这是一个演示它的mre 1