我正在尝试开发一个 LARP 字符管理器,并且在我的框架内有一个面板,其中包含我想使用 CardLayout 交换的所有窗口。这是我的 ContainerPane 代码。
public class ContainerPane extends JPanel {
private static final long serialVersionUID = -4799973935806714569L;
private JPanel deckOfPanes = null;
private PlayerManagerPane myPlayerManagerPane = null;
private GameManagerPane myGameManagerPane= null;
private CharacterManagerPane myCharacterManagerPane = null;
final static String CHANGETOCHARACTERMANAGERPANE = "Character Manager";
final static String CHANGETOPLAYERMANAGERPANE = "Player Manager";
final static String CHANGETOGAMEMANAGERPANE = "Game Manager";
public ContainerPane(EventListener myEventListener) {
myPlayerManagerPane = new PlayerManagerPane(myEventListener);
myGameManagerPane = new GameManagerPane(myEventListener);
myCharacterManagerPane = new CharacterManagerPane(myEventListener);
deckOfPanes= new JPanel(new CardLayout());
deckOfPanes.add(myCharacterManagerPane,CHANGETOCHARACTERMANAGERPANE);
deckOfPanes.add(myPlayerManagerPane,CHANGETOPLAYERMANAGERPANE);
deckOfPanes.add(myGameManagerPane,CHANGETOGAMEMANAGERPANE);
CardLayout cardLayout = (CardLayout) ((ContainerPane) this).getDeckOfPanes().getLayout();
cardLayout.show(deckOfPanes,CHANGETOCHARACTERMANAGERPANE);
}
public JPanel getDeckOfPanes() {
return deckOfPanes;
}
首先,我想构造函数的最后一行将确保当它被调用时,它会在顶部显示某张卡片。
在我的代码的其他地方,我想使用菜单栏交换卡片。这是我的 EventHandler 类的代码:
public void swapView(String key) {
CardLayout cardLayout = (CardLayout) ((ContainerPane) myContainerPane).getDeckOfPanes().getLayout();
cardLayout.show(myContainerPane.getDeckOfPanes(),key);
}
这也行不通。我刚刚开始使用 Java,非常感谢您对此提供的任何帮助,我已经检查了教程和网络上的其他地方(包括堆栈溢出),据我所知,它应该可以工作。请,任何帮助将不胜感激。