JTabbedPaneのタブのテキストシフト量を変更する
Total: 1681
, Today: 2
, Yesterday: 1
Posted by aterai at
Last-modified:
概要
JTabbedPane
の選択状態でのタブテキストシフト量などを変更します。
Screenshot
Advertisement
サンプルコード
// UIManager.getLookAndFeelDefaults().get("TabbedPane.selectedLabelShift");
// UIManager.getLookAndFeelDefaults().get("TabbedPane.labelShift");
// UIManager.put("TabbedPane.selectedLabelShift", -1);
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());
});
View in GitHub: Java, Kotlin解説
上記のサンプルでは、Java 1.6.0
から導入されたTabbedPane.selectedLabelShift
とTabbedPane.labelShift
を使用してJTabbedPane
の選択状態タブのテキストシフト量を変更するテストを実行しています。
- テキストだけではなくタブアイコンや
JTabbedPane#setTabComponentAt(...)
で設定したタブコンポーネントも同様にシフトする - 移動方向はマイナスでタブの外側、プラスでタブの内側になる
- 例えばタブ位置がデフォルトの
JTabbedPane.TOP
の場合はマイナスで上方向、プラスで下方向にシフトする
- 例えばタブ位置がデフォルトの
TabbedPane.selectedLabelShift
- 選択状態タブのテキストシフト量
WindowsLookAndFeel
でのデフォルトは-1
TabbedPane.labelShift
- 非選択状態タブのテキストシフト量
WindowsLookAndFeel
でのデフォルトは1
参考リンク
- JDK-7010561 Tab text position with Synth based LaF is different to Java 5/6 - Java Bug System
- JButtonのテキストシフト量を変更