Надеюсь, вы все можете мне помочь понять эту тайну. Я создал JPanel, который содержал кнопку «Назад» и имел приятный макет, который мне нравился. Я хотел добавить этот JPanel (я буду называть его homeButtonPanel отсюда) к нескольким другим JPANEL, потому что я хочу, чтобы все они имели кнопку «Назад».JPanel исчезает при добавлении к нескольким другим JPanel
Я добавил homeButtonPanel в JPanel gameRoom, а затем в JPanel gamePlay. Когда gameRoom был показан в основном JFrame, homeButtonPanel не отображался. Когда gamePlay был показан в главном JFrame, на нем отобразился homeButtonPanel :. Я не мог понять это так долго.
После так много путаницы и разочарования, я понял, что, когда я закомментировать строки, который добавил homeButtonPanel к панели Геймплей, homeButtonPanel будет отображаться на панели Люстра.
Почему я не могу добавить этот JPanel в несколько дополнительных JPanel?
(Также для справки я использую CardLayout для переключения между отображаемыми JPanel, если это имеет значение)
//Set up of the GameRoom Panel
//**********************************************************************
JPanel gameRoom = new JPanel();
//create welcome label
JLabel welcomeGameRoom = new JLabel("Welcome to the GameRoom");
//create the go home button (and its panel)
JPanel homeButtonHolder= new JPanel();
JButton goHome = new JButton("Go Home");
goHome.setVisible(true);
homeButtonHolder.add(goHome);
//add the go home holder to the gameplay panel
gameRoom.add(homeButtonHolder);
//add the welcome label to the gameplay panel
gameRoom.add(welcomeGameRoom);
//add the gameroom panel to the card panel
//Set up of the GamePlay Panel
//**********************************************************************
JPanel gamePlay = new JPanel();
JLabel welcomeGamePlay = new JLabel("Welcome to the Game");
//add the go home holder to the gameplay panel
//*****This is the line that is the issue ***************
gamePlay.add(homeButtonHolder);
//add the welcome label to the gameplay panel
gamePlay.add(welcomeGamePlay);
После [link] (http://docs.oracle.com/javase/tutorial/uiswing/components/toplevel.html): «Каждый компонент GUI может содержаться только один раз. Если компонент уже находится в контейнере и вы пытаетесь добавить его в другой контейнер, компонент будет удален из первого контейнера, а затем добавлен ко второму « –