Заставить JMenuItem показывать одну JPanel и скрывать другую

Я хотел бы иметь возможность переключаться между двумя возможными панелями JPanel в моем фрейме, выбрав определенный JMenuItem. Что я пробовал до сих пор:

Слушатель действий в моем классе JMenuBar:

@Override
public void actionPerformed(ActionEvent e) {
        if (e.getSource().equals(fullList))
            gui.switchToFullList();
        else if (e.getSource().equals(history))
            gui.switchToHistory();
}

В классе графического интерфейса:

void switchToFullList() {
    remove(history);
    add(fullList);
}

void switchToHistory() {
    remove(fullList);
    add(history);
}

где history и fullList — панели JPanel.

Кажется, это никак не меняет мою рамку.


person Saraph    schedule 29.12.2014    source источник
comment
Вместо этого я бы рекомендовал использовать CardLayout.   -  person kiheru    schedule 29.12.2014


Ответы (1)


Если вы хотите показать одну панель и скрыть другую, обе они должны быть дочерними элементами вашего фрейма, тогда вы можете получить доступ к этим панелям по: frame.JpanelName.

Пример удаления истории и добавления fullList:

frame.remove(frame.history);
frame.getContentPane().add(frame.fullList);
frame.validate();
frame.repaint();
person Power    schedule 29.12.2014
comment
В чем разница между frame.add(...) и frame.getContentPane().add(...)? - person Saraph; 29.12.2014