Swing/ComponentZOrder の変更点
- 追加された行はこの色です。
- 削除された行はこの色です。
- Swing/ComponentZOrder へ行く。
- Swing/ComponentZOrder の差分を削除
--- 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?id=1mSe3NrxaEpAwsdupzRCA_Uv1RY8aaMXf5Q --- * 概要 [#summary] `JPanel`内のコンポーネントの`Z`軸順インデックスを変更してその表示順序を変更します。 #download(https://drive.google.com/uc?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`軸順インデックスで左から右にコンポーネントを配置、表示する -- `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`軸順インデックスを変更しても表示位置は変化しない -- `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