• 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

概要

JTabbedPaneの選択状態でのタブテキストシフト量などを変更します。

サンプルコード

#spandel
UIManager.put("TabbedPane.selectedLabelShift", -1);
#spanend
#spandel
UIManager.put("TabbedPane.labelShift", 1);
#spanend
#spanadd
// UIManager.getLookAndFeelDefaults().get("TabbedPane.selectedLabelShift");
#spanend
#spanadd
// UIManager.getLookAndFeelDefaults().get("TabbedPane.labelShift");
#spanend
#spanadd
// UIManager.put("TabbedPane.selectedLabelShift", -1);
#spanend
#spanadd
int slsiv = UIManager.getLookAndFeelDefaults()
#spanend
    .getInt("TabbedPane.selectedLabelShift");
#spanadd
SpinnerNumberModel slsModel = new SpinnerNumberModel(slsiv, -5, 5, 1);
#spanend
#spanadd
slsModel.addChangeListener(e -> {
#spanend
  SpinnerNumberModel source = (SpinnerNumberModel) e.getSource();
  Integer offset = source.getNumber().intValue();
  UIManager.put("TabbedPane.selectedLabelShift", offset);
  SwingUtilities.updateComponentTreeUI(getTopLevelAncestor());
#spanadd
});
#spanend
#spanadd

#spanend
#spanadd
// UIManager.put("TabbedPane.labelShift", 1);
#spanend
#spanadd
int lsiv = UIManager.getLookAndFeelDefaults().getInt("TabbedPane.labelShift");
#spanend
#spanadd
SpinnerNumberModel lsModel = new SpinnerNumberModel(lsiv, -5, 5, 1);
#spanend
#spanadd
lsModel.addChangeListener(e -> {
#spanend
  SpinnerNumberModel source = (SpinnerNumberModel) e.getSource();
  Integer offset = source.getNumber().intValue();
  UIManager.put("TabbedPane.labelShift", offset);
  SwingUtilities.updateComponentTreeUI(getTopLevelAncestor());
#spanadd
});
#spanend
View in GitHub: Java, Kotlin

解説

上記のサンプルでは、Java 1.6.0?から導入されたTabbedPane.selectedLabelShiftTabbedPane.labelShiftを使用してJTabbedPaneのタブテキストシフト量を変更するテストが可能です。 上記のサンプルでは、Java 1.6.0から導入されたTabbedPane.selectedLabelShiftTabbedPane.labelShiftを使用してJTabbedPaneの選択状態タブのテキストシフト量を変更するテストを実行しています。 テキストだけではなく、タブアイコンやJTabbedPane#setTabComponentAt(...)で設定したタブコンポーネントも同様にシフトします。
  • テキストだけではなくタブアイコンやJTabbedPane#setTabComponentAt(...)で設定したタブコンポーネントも同様にシフトする
  • 移動方向はマイナスでタブの外側、プラスでタブの内側になる
    • 例えばタブ位置がデフォルトのJTabbedPane.TOPの場合はマイナスで上方向、プラスで下方向にシフトする
移動方向はマイナスでタブの外側、プラスでタブの内側になり、例えばデフォルトのタブ位置(JTabbedPane.TOP)の場合はマイナスで上方向、プラスで下方向にシフトします。
  • -
  • TabbedPane.selectedLabelShift
    • 選択状態タブのテキストシフト量
    • WindowsLookAndFeelでのデフォルトは-1
  • TabbedPane.labelShift
    • 非選択状態タブのテキストシフト量
    • WindowsLookAndFeelでのデフォルトは1

参考リンク

コメント