Swing/ComponentZOrder のバックアップの現在との差分(No.1)
- category: swing folder: ComponentZOrder title: JPanelに追加したコンポーネントの順序を変更する tags: [JPanel, LayoutManager] 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 image: https://drive.google.com/uc?id=1mSe3NrxaEpAwsdupzRCA_Uv1RY8aaMXf5Q
概要
JPanel内のコンポーネントのZ軸順インデックスを変更してその表示順序を変更します。JPanel
内のコンポーネントのZ
軸順インデックスを変更してその表示順序を変更します。
Screenshot
Advertisement
Screenshot
Advertisement
サンプルコード
button.addActionListener(e -> {
p.setComponentZOrder(p.getComponent(p.getComponentCount() - 1), 0);
p.revalidate();
});
View in GitHub: Java, Kotlin解説
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
軸順インデックスを変更しても表示位置は変化しない
- 例えば
-