Я просмотрел несколько похожих сообщений, но у меня нет такой же проблемы, как у меня, что кажется относительно простым. У меня есть следующий код:Панели JPANEL EAST и CENTER кажутся наложенными
public PlayScreen(Player player){
this.player = player;
playScreen = new JPanel();
playScreen.setLayout(new BorderLayout());
setTowerButtons();
playScreen.add(towerButtons, BorderLayout.EAST); //line 6
setDetailLabels();
playScreen.add(detailPanel, BorderLayout.WEST);
setMap("map.png");
playScreen.add(new JButton("hello"), BorderLayout.CENTER); //line 10
playScreen.setVisible(true);
}
public class View {
private JFrame frame;
private Container contentPane;
private Player player;
private LoadScreen loadScreen;
private PlayScreen playScreen;
public View(Player player){
frame = new JFrame("Display");
contentPane = frame.getContentPane();
contentPane.setLayout(new BorderLayout());
this.player = player;
frame.setVisible(true);
frame.pack();
}
public void makeLoadScreen(){
loadScreen = new LoadScreen();
contentPane.add(loadScreen.getLoadScreen(), BorderLayout.CENTER);
frame.pack();
}
public void makePlayScreen(Player player){
contentPane.remove(loadScreen.getLoadScreen());;
playScreen = new PlayScreen(player);
contentPane.add(playScreen.getPlayScreen());
frame.pack();
}
public class LoadScreen{
private JPanel loadScreen;
public LoadScreen(){
loadScreen = new JPanel();
JButton play = new JButton("Play");
JButton load = new JButton("Load");
loadScreen.setLayout(new GridLayout(2,1,0,0));
loadScreen.add(play);
loadScreen.add(load);
play.addActionListener(new OpenActionListener());
load.addActionListener(new LoadActionListener());
}
public class OpenActionListener implements ActionListener{
public void actionPerformed(ActionEvent e){
makePlayScreen(player);
}
}
}
}
The View класс первый созданный. Я вручную вызываю метод makeLoadScreen() (хотя позже я его поменю, чтобы сделать это автоматически), который создает LoadScreen, описанный во вложенном классе. Это дает представление о двух кнопках, воспроизведении и загрузке. При нажатии на воспроизведение создается PlayScreen, где проблема.
Когда он запускается, detailPanel всегда отображается в левом верхнем углу, как и предполагалось. Но панель towerButtons исчезает, и отображается кнопка «hello», заполняя остальную часть экрана. Если я переключаю линии 6 и 10, кнопка «hello» исчезает, и на панели TowerButtons отображается, заполняя остальную часть экрана.
Вместо этого я хотел бы, чтобы башня Кнопки отображались справа, с помощью кнопки «привет» между этим и detailPanel.
Редактирование: добавлена остальная часть кода, должно было сделать это раньше, извините! Edits2: Проблема оказывается с «TowerButtons», не имеет ничего общего с наложением JPanel.
Для лучшей помощи, размещать скриншоты и [более полный пример] (http://stackoverflow.com/help/mcve), который воспроизводит поведение, которое вы видите. – Radiodef
Просьба указать похожие сообщения. – trashgod