Java — CardLayout показать () IllegalArgumentException

У меня проблема с методом отображения CardLayout

Итак, я объявляю свой CardLayout и применяю его к своей JPanel.

CardLayout cl = new CardLayout();
panel.setLayout(cl);

Затем я добавляю 2 панели в CardLayout

cl.addLayoutComponent(panel, "menuScreen");
cl.addLayoutComponent(panel1, "gameScreen");

Затем у меня есть JButton, при нажатии которого я показываю игровой экран.

public void mouseClicked(MouseEvent e) {
    if(e.getSource() ==  (startGame))

    scenechange.show(panel,"gameScreen");
}

Единственная проблема в том, что он не заходит на мой игровой экран. Это дает мне llegalArgumentException. В нем говорится: «Исключение в потоке« AWT-EventQueue-0 »java.lang.IllegalArgumentException: неправильный родитель для CardLayout».

заранее спасибо


person basketballhead24    schedule 05.09.2012    source источник


Ответы (1)


У вас должно получиться три панели. Родитель и две карты.

В настоящее время у вас есть «панель» в качестве родителя и одного из дочерних элементов.

CardLayout cl = new CardLayout();
panel.setLayout(cl);

и

cl.addLayoutComponent(panel, "menuScreen");

Рассмотрим этот пример кода из Java trail.

 ....
 //Create the "cards".
    JPanel card1 = new JPanel();
    card1.add(new JButton("Button 1"));

    JPanel card2 = new JPanel();
    card2.add(new JTextField("TextField", 20));

    //Create the panel that contains the "cards".
    cards = new JPanel(new CardLayout());
    cards.add(card1, BUTTONPANEL);
    cards.add(card2, TEXTPANEL);
person RNJ    schedule 05.09.2012