Переключение между картами в CardLayout с использованием getParent () - PullRequest
0 голосов
/ 08 июня 2010

Я пишу приложение, в котором я использую CardLayout для переключения между двумя панелями, расположенными прямо друг над другом.

Существует JPanel с именем Top, а его макет называется CardLayout. Внутри этой JPanel находится JPanel под названием CMatch. Всякий раз, когда пользователь нажимает кнопку отправки на панели CMatch, я хочу, чтобы в панель Top добавлялась новая JPanel, созданная на основе того, что пользователь вводит, и она будет отображаться вместо исходной панели CMatch. Все это делается с помощью CardLayout.

Однако это все разные классы в разных файлах (панель Top с CardLayout, панель CMatch, находящаяся внутри верхней панели, и пользовательская панель). Поэтому я попытался использовать следующее, чтобы добавить новую панель на верхнюю панель и затем показать ее:

(этот код имеет место в классе CMatch):

<code>
    private void submitButtionActionPerformed(ActionEvent e) {
        CardLayout cl = (CardLayout)(this.getParent().getLayout());
        cl.addLayoutComponent(new CChoice(), "college_choices");
        cl.show(this.getParent(), "college_choices");
    }

Однако это не сработало. Так что мне было интересно, что я делаю не так? Любой совет с благодарностью, спасибо!

Ответы [ 2 ]

1 голос
/ 08 июня 2010

Не знаю, имеет ли это значение, но я всегда добавляю компоненты непосредственно в Контейнер:

String cardName = "college_choices";
Container parent = this.getParent();
parent.add(new CChoice(), cardName); 
CardLayout cl = (CardLayout)parent.getLayout(); 
cl.show(parent, cardName); 
0 голосов
/ 17 декабря 2017

У меня работает следующее:

this.requiredPanelName.setvisible(true) // for required panel
this.otherPanelName.setvisible(false)  // for not required 
this.otherPanelName.setvisible(false) // for not required 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...