2011-06-28 15 views

答えて

10

CardLayoutは、現在選択されているパネルの内容を認識しません。 show()メソッドを呼び出すときは、これを自分自身でメモリに保存してください。

+0

1は、ここで関連[例]です(http://stackoverflow.com/questions/6432170/how-to-change-ui-depending-on-combo-box-選択/ 6432291#6432291)。 – trashgod

+0

これは問題ありません。私たちはチームをスイングする必要がありますか? Java 7では、スイングの新しいコンポーネント(JLayer)をリリースしたことにより、Oracleが少なくともメンテナンスを継続することが示唆されています。なぜこのような便利な機能を追加しないのですか? – AgostinoX

6

CardLayoutではこれを許可していません。ただし、CardLayoutの上部パネルにアクセスできる必要があります。

だから少し問題は、追加された各パネルに文字列識別子に等しい名前を付けることです。そうすれば、一番上のカードを手に入れて、名前をつけることができます。これは、あなたがそれを行う方法です。

final String CARD1 = "Card 1"; 
final String CARD2 = "Card 2"; 

JPanel panel = new JPanel(new CardLayout()); 
JPanel card1 = new JPanel(); 
card1.setName(CARD1); 
JPanel card2 = new JPanel(); 
card2.setName(CARD2); 

panel.add(card1); 
panel.add(card2); 

//now we want to get the String identifier of the top card: 
JPanel card = null; 
for (Component comp : panel.getComponents()) { 
    if (comp.isVisible() == true) { 
     card = (JPanel) comp; 
    } 
} 
System.out.println(card.getName()); 
関連する問題