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を始めたばかりで、これについて何か助けていただければ幸いです。チュートリアルやウェブ上の他の場所(スタックオーバーフローを含む)をチェックしましたが、私が見ることができるものから、動作するはずです。よろしくお願いします。