同じ識別子を持つ 2 つのカードを追加するときの cardlayout のデフォルトの動作は何ですか。たとえば、panel1
追加された場合。プログラムの後半でpanel2
、同じ文字列識別子を追加します。カード スタックでpanel1
置き換えるデフォルトの動作はありますか? panel2
ありがとう
質問する
633 次
2 に答える
4
以下は、によって実行されるCardLayout's
実装です。addLayoutComponent()
addLayoutComponent(Component comp, Object constraints)
public void addLayoutComponent(String name, Component comp) {
synchronized (comp.getTreeLock()) {
if (!vector.isEmpty()) {
comp.setVisible(false);
}
for (int i=0; i < vector.size(); i++) {
if (((Card)vector.get(i)).name.equals(name)) {
((Card)vector.get(i)).comp = comp;
return;
}
}
vector.add(new Card(name, comp));
}
}
CardLayout
オブジェクトのベクトルを保持しCard
ます (以下を参照)。Component
名前の競合が検出されるCard
と、同じ名前の が新しいものに置き換えられて追加されるように見えComponent
ます。そのためshow()
、特定の名前を指定すると、その名前で最後に追加されたコンポーネントが表示されます。
class Card implements Serializable {
static final long serialVersionUID = 6640330810709497518L;
public String name;
public Component comp;
public Card(String cardName, Component cardComponent) {
name = cardName;
comp = cardComponent;
}
}
于 2012-05-23T15:56:49.687 に答える
2
同じ識別子を持つ複数のカードを追加できます。[編集]のみ[/編集]両方に移動できます。 [edit]最初と最後[/edit]に追加されたパネルを示します。show(Container, String)
カスパー
于 2012-05-23T15:29:53.377 に答える