显示错误面板的卡片布局面板 - Java Swing
Card Layout Panel showing wrong panel - Java Swing
我希望 INIT_PANEL 首先位于顶部,然后(稍后)单击按钮将其切换到 GAME_PANEL。
但是,当我 运行 它时,GAME_PANEL 是第一个...
我做错了什么?
这是代码的重要部分:
public class MainFrame extends JFrame {
private JPanel contentPane;
private static final String GAME_PANEL = "Game panel";
private static final String INIT_PANEL = "Initial panel";
private void addPanels(){
contentPane.add(new GamePanel(), GAME_PANEL);
contentPane.add(new InitialPanel(this), INIT_PANEL);
((CardLayout) contentPane.getLayout()).show(contentPane, INIT_PANEL);
}
void switchPanels(){
((CardLayout) contentPane.getLayout()).next(contentPane);
}
public MainFrame(){
////////////////////////////resizing
contentPane = new JPanel();
contentPane.setLayout(new CardLayout(20,20));
addPanels();
////////////////////////listener for closing
}
}
我认为您遇到的问题不在所提供的代码中。为了让这个工作我必须改变的一件事是添加内容窗格,它从未被添加:
public MainFrame(){
////////////////////////////resizing
contentPane = new JPanel();
contentPane.setLayout(new CardLayout(20,20));
addPanels();
this.add(this.contentPane); // I added this
////////////////////////listener for closing
}
那时它正在工作。所以我的猜测是,如果这是直接从您的代码中删除的内容,那么您没有添加内容窗格,而您在想的是游戏面板实际上是在其他地方呈现的。这个假设正确吗?
我希望 INIT_PANEL 首先位于顶部,然后(稍后)单击按钮将其切换到 GAME_PANEL。 但是,当我 运行 它时,GAME_PANEL 是第一个...
我做错了什么?
这是代码的重要部分:
public class MainFrame extends JFrame {
private JPanel contentPane;
private static final String GAME_PANEL = "Game panel";
private static final String INIT_PANEL = "Initial panel";
private void addPanels(){
contentPane.add(new GamePanel(), GAME_PANEL);
contentPane.add(new InitialPanel(this), INIT_PANEL);
((CardLayout) contentPane.getLayout()).show(contentPane, INIT_PANEL);
}
void switchPanels(){
((CardLayout) contentPane.getLayout()).next(contentPane);
}
public MainFrame(){
////////////////////////////resizing
contentPane = new JPanel();
contentPane.setLayout(new CardLayout(20,20));
addPanels();
////////////////////////listener for closing
}
}
我认为您遇到的问题不在所提供的代码中。为了让这个工作我必须改变的一件事是添加内容窗格,它从未被添加:
public MainFrame(){
////////////////////////////resizing
contentPane = new JPanel();
contentPane.setLayout(new CardLayout(20,20));
addPanels();
this.add(this.contentPane); // I added this
////////////////////////listener for closing
}
那时它正在工作。所以我的猜测是,如果这是直接从您的代码中删除的内容,那么您没有添加内容窗格,而您在想的是游戏面板实际上是在其他地方呈现的。这个假设正确吗?