Swing/TabbedPaneLabelShift の変更点
- 追加された行はこの色です。
- 削除された行はこの色です。
- Swing/TabbedPaneLabelShift へ行く。
- Swing/TabbedPaneLabelShift の差分を削除
--- category: swing folder: TabbedPaneLabelShift title: JTabbedPaneのタブのテキストシフト量を変更する tags: [JTabbedPane, UIManager] author: aterai pubdate: 2018-09-17T16:31:38+09:00 description: JTabbedPaneの選択状態でのタブテキストシフト量などを変更します。 image: https://drive.google.com/uc?id=1h-7B_-q-8VbEv-cpGzX6hQFdOcf8KgT9LA --- * 概要 [#summary] `JTabbedPane`の選択状態でのタブテキストシフト量などを変更します。 #download(https://drive.google.com/uc?id=1h-7B_-q-8VbEv-cpGzX6hQFdOcf8KgT9LA) * サンプルコード [#sourcecode] #code(link){{ System.out.println(UIManager.getLookAndFeelDefaults().get("TabbedPane.selectedLabelShift")); System.out.println(UIManager.getLookAndFeelDefaults().get("TabbedPane.labelShift")); // UIManager.getLookAndFeelDefaults().get("TabbedPane.selectedLabelShift"); // UIManager.getLookAndFeelDefaults().get("TabbedPane.labelShift"); // UIManager.put("TabbedPane.selectedLabelShift", -1); int slsiv = UIManager.getLookAndFeelDefaults().getInt("TabbedPane.selectedLabelShift"); int slsiv = UIManager.getLookAndFeelDefaults() .getInt("TabbedPane.selectedLabelShift"); SpinnerNumberModel slsModel = new SpinnerNumberModel(slsiv, -5, 5, 1); slsModel.addChangeListener(e -> { SpinnerNumberModel source = (SpinnerNumberModel) e.getSource(); Integer offset = source.getNumber().intValue(); UIManager.put("TabbedPane.selectedLabelShift", offset); SwingUtilities.updateComponentTreeUI(getTopLevelAncestor()); }); // UIManager.put("TabbedPane.labelShift", 1); int lsiv = UIManager.getLookAndFeelDefaults().getInt("TabbedPane.labelShift"); SpinnerNumberModel lsModel = new SpinnerNumberModel(lsiv, -5, 5, 1); lsModel.addChangeListener(e -> { SpinnerNumberModel source = (SpinnerNumberModel) e.getSource(); Integer offset = source.getNumber().intValue(); UIManager.put("TabbedPane.labelShift", offset); SwingUtilities.updateComponentTreeUI(getTopLevelAncestor()); }); }} * 解説 [#explanation] 上記のサンプルでは、`Java 1.6.0`から導入された`TabbedPane.selectedLabelShift`と`TabbedPane.labelShift`を使用して`JTabbedPane`の選択状態タブのテキストシフト量を変更するテストを実行しています。 - テキストだけではなくタブアイコンや`JTabbedPane#setTabComponentAt(...)`で設定したタブコンポーネントも同様にシフトする - 移動方向はマイナスでタブの外側、プラスでタブの内側になる -- 例えばタブ位置がデフォルトの`JTabbedPane.TOP`の場合はマイナスで上方向、プラスで下方向にシフトする ---- - `TabbedPane.selectedLabelShift` -- 選択状態タブのテキストシフト量 -- `WindowsLookAndFeel`でのデフォルトは`-1` - `TabbedPane.labelShift` -- 非選択状態タブのテキストシフト量 -- `WindowsLookAndFeel`でのデフォルトは`1` * 参考リンク [#reference] - [https://bugs.openjdk.org/browse/JDK-7010561 JDK-7010561 Tab text position with Synth based LaF is different to Java 5/6 - Java Bug System] - [[JButtonのテキストシフト量を変更>Swing/TextShiftOffset]] * コメント [#comment] #comment #comment