8

カード レイアウトで選択したパネルの文字列識別子を取得するにはどうすればよいですか。

4

2 に答える 2

14

CardLayout は、現在選択されているパネルが何であるかを知りません。show() メソッドを呼び出すときは、これを自分でメモリに保持する必要があります。

于 2011-06-28T12:13:56.853 に答える
10

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());
于 2012-06-27T19:09:22.913 に答える