Swing/ComponentZOrder のバックアップ差分(No.3)
- バックアップ一覧
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- バックアップ を表示
- Swing/ComponentZOrder へ行く。
- 1 (2019-02-11 (月) 21:48:50)
- 2 (2019-02-12 (火) 14:26:42)
- 3 (2019-07-29 (月) 02:31:12)
- 4 (2020-12-05 (土) 16:16:06)
- 5 (2023-03-11 (土) 16:46:06)
- 追加された行はこの色です。
- 削除された行はこの色です。
---
category: swing
folder: ComponentZOrder
title: JPanelに追加したコンポーネントの順序を変更する
tags: [JPanel, LayoutManager, GridLayout, GridBagLayout]
author: aterai
pubdate: 2019-02-11T21:46:54+09:00
description: JPanel内のコンポーネントのZ軸順インデックスを変更してその表示順序を変更します。
image: https://drive.google.com/uc?export=view&id=1mSe3NrxaEpAwsdupzRCA_Uv1RY8aaMXf5Q
---
* 概要 [#summary]
`JPanel`内のコンポーネントの`Z`軸順インデックスを変更してその表示順序を変更します。
#download(https://drive.google.com/uc?export=view&id=1mSe3NrxaEpAwsdupzRCA_Uv1RY8aaMXf5Q)
* サンプルコード [#sourcecode]
#code(link){{
button.addActionListener(e -> {
p.setComponentZOrder(p.getComponent(p.getComponentCount() - 1), 0);
p.revalidate();
});
}}
* 解説 [#explanation]
- `GridLayout`を設定した`JPanel`に配置した`Z`軸順インデックスを変更
-- `GridLayout`は`JPanel`の`ComponentOrientation`が`LEFT_TO_RIGHT`の場合、`Z`軸順インデックスで左から右にコンポーネントを配置、表示する
--- `FlowLayout`、`BoxLayout`なども同様
- `GridBagLayout`を設定した`JPanel`に配置した`Z`軸順インデックスを変更
-- `GridBagConstraints.gridx`や`GridBagConstraints.gridy`のような位置に関する制約が指定されていない(デフォルトの`GridBagConstraints.RELATIVE`の状態)場合、`GridBagLayout`は`Z`軸順インデックスで左から右にコンポーネントを配置、表示する
--- 例えば`c.gridx = 0;`などの制約が設定されている場合、`setComponentZOrder(...)`メソッドで`Z`軸順インデックスを変更しても表示位置は変化しない
--- `BorderLayout`のように`BorderLayout.NORTH`などのレイアウト制約を設定してコンポーネントを配置している場合も同様に`Z`軸順インデックスを変更しても表示位置は変化しない
* 参考リンク [#reference]
- [https://docs.oracle.com/javase/jp/8/docs/api/java/awt/Container.html#setComponentZOrder-java.awt.Component-int- Container#setComponentZOrder(int) (Java Platform SE 8)]
- [[JSplitPaneに設定した子コンポーネントの位置を入れ替える>Swing/SwappingSplitPane]]
* コメント [#comment]
#comment
#comment