Swing/BoxLayoutAlignment のバックアップ差分(No.1)
- バックアップ一覧
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- バックアップ を表示
- Swing/BoxLayoutAlignment へ行く。
- 追加された行はこの色です。
- 削除された行はこの色です。
--- title: BoxLayoutでJLabelの中央揃えをテストする tags: [BoxLayout, JLabel] author: aterai pubdate: 2015-01-26T00:15:23+09:00 description: BoxLayoutを設定したJPanelに、最小サイズを設定したJLabelを中央揃えで配置するテストを行います。 --- * 概要 [#fd4338ff] `BoxLayout`を設定した`JPanel`に、最小サイズを設定した`JLabel`を中央揃えで配置するテストを行います。 #download(https://lh3.googleusercontent.com/-OKh2kmuDUus/VMUE-LLN_NI/AAAAAAAANvk/FtPEqk8f820/s800/BoxLayoutAlignment.png) * サンプルコード [#bba158d2] #code(link){{ JLabel l2 = new JLabel("abc") { @Override public Dimension getPreferredSize() { return new Dimension(50, 50); } @Override public Dimension getMinimumSize() { Dimension d = super.getMinimumSize(); if (d != null) { d.width = value; d.height = value; } return d; } }; l2.setOpaque(true); l2.setBackground(Color.ORANGE); l2.setFont(l.getFont().deriveFont(Font.PLAIN)); l2.setAlignmentX(Component.CENTER_ALIGNMENT); l2.setAlignmentY(Component.CENTER_ALIGNMENT); l2.setVerticalAlignment(SwingConstants.CENTER); l2.setVerticalTextPosition(SwingConstants.CENTER); l2.setHorizontalAlignment(SwingConstants.CENTER); l2.setHorizontalTextPosition(SwingConstants.CENTER); final JPanel p2 = new TestPanel(); p2.setLayout(new BoxLayout(p2, BoxLayout.Y_AXIS)); p2.add(Box.createVerticalGlue()); p2.add(l2); p2.add(Box.createVerticalGlue()); }} * 解説 [#q6c8a691] 上記のサンプルは、[http://stackoverflow.com/questions/27790417/alignment-of-single-characters-in-java-boxlayout-on-y-axis-is-off-center swing - Alignment of Single Characters in Java BoxLayout on Y-Axis Is Off-Center - Stack Overflow]を参考にして、`BoxLayout`の中央揃えのバグ?を検証するために作成しています。 - `setAlignmentX(Component.CENTER_ALIGNMENT)`、`setAlignmentY(Component.CENTER_ALIGNMENT)`を設定した`JLabel`を作成 - `BoxLayout.X_AXIS`の`Box`に、この`JLabel`が左右中央に配置されるよう、`Box.createHorizontalGlue()`で挟んで追加 - `BoxLayout.Y_AXIS`の`Box`に、この`JLabel`が上下中央に配置されるよう、`Box.createVerticalGlue()`で挟んで追加 - `JLabel#getMinimumSize()`の返す値を`JSpinner`で変更すると、値が奇数になる場合で揃えがずれてしまう * 参考リンク [#t804356c] - [https://docs.oracle.com/javase/tutorial/uiswing/layout/box.html How to Use BoxLayout (The Java™ Tutorials > Creating a GUI With JFC/Swing > Laying Out Components Within a Container)] - [http://stackoverflow.com/questions/27790417/alignment-of-single-characters-in-java-boxlayout-on-y-axis-is-off-center swing - Alignment of Single Characters in Java BoxLayout on Y-Axis Is Off-Center - Stack Overflow] * コメント [#v3a5dee2] #comment #comment