Swing/RotateTabRuns のバックアップ(No.11)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- Swing/RotateTabRuns へ行く。
- 1 (2019-08-26 (月) 15:09:58)
- 2 (2019-11-05 (火) 17:38:36)
- 3 (2019-12-10 (火) 17:35:00)
- 4 (2020-06-07 (日) 17:10:46)
- 5 (2021-11-23 (火) 02:49:29)
- 6 (2022-08-20 (土) 22:15:25)
- 7 (2025-01-03 (金) 08:57:02)
- 8 (2025-01-03 (金) 09:01:23)
- 9 (2025-01-03 (金) 09:02:38)
- 10 (2025-01-03 (金) 09:03:21)
- 11 (2025-01-03 (金) 09:04:02)
- category: swing folder: RotateTabRuns title: JTabbedPaneのタブ・ランの回転を無効にする tags: [JTabbedPane, LookAndFeel] author: aterai pubdate: 2019-08-26T15:08:32+09:00 description: JTabbedPaneで複数のランにタブをラップする場合でもタブ選択によるランの回転を無効にします。 image: https://drive.google.com/uc?id=16rk3I7OgmEfeRwOrYTrLp-3WcplBDOet
Summary
JTabbedPane
で複数のランにタブをラップする場合でもタブ選択によるランの回転を無効にします。
Screenshot
Advertisement
Source Code Examples
UIManager.put("TabbedPane.tabRunOverlay", 0);
UIManager.put("TabbedPane.selectedLabelShift", 0);
UIManager.put("TabbedPane.labelShift", 0);
UIManager.put("TabbedPane.selectedTabPadInsets", new Insets(0, 0, 0, 0));
JTabbedPane tabbedPane = new JTabbedPane() {
@Override public void updateUI() {
super.updateUI();
setUI(new WindowsTabbedPaneUI() {
@Override protected boolean shouldRotateTabRuns(int tabPlacement) {
return false;
}
});
}
};
View in GitHub: Java, KotlinExplanation
- 上:
Default
MetalLookAndFeel
以外のLookAndFeel
ではJTabbedPane
レイアウトがWRAP_TAB_LAYOUT
で複数のランにタブをラップするレイアウトモードの場合、選択されたタブがタブコンテンツに接地するようランの回転が発生するMetalLookAndFeel
の場合、MetalTabbedPaneUI.TabbedPaneLayout#rotateTabRuns(int tabPlacement, int selectedRun)
メソッドがオーバーライドされて空(なにも実行しない)になっているため、タブ・ランの回転は発生しないMetalTabbedPaneUI#shouldRotateTabRuns(int tabPlacement, int selectedRun)
が常にfalse
を返すよう設定されているが引数が2
つあるこのメソッドは他では全く使用されておらず、BasicTabbedPaneUI#shouldRotateTabRuns(int tabPlacement)
メソッドがオーバーライドされていないので無意味- 少なくとも
Java 5
以前から存在するコピペミスのバグ?かも(@Override
が使用可能なら発覚していたはず)
- 少なくとも
- 下:
Override BasicTabbedPaneUI#shouldRotateTabRuns(...)
BasicTabbedPaneUI#shouldRotateTabRuns(int tabPlacement)
メソッドをオーバーライドして常にfalse
を返すよう設定してタブ・ランの回転を無効化UIManager.put("TabbedPane.tabRunOverlay", 0);
を設定してタブ・ランの重なりを除去UIManager.put("TabbedPane.labelShift", 0);
とUIManager.put("TabbedPane.selectedLabelShift", 0);
を設定してタブテキストのシフトを無効化UIManager.put("TabbedPane.selectedTabPadInsets", new Insets(0, 0, 0, 0));
を設定して選択タブのサイズ拡張を無効化
Reference
- BasicTabbedPaneUI#shouldRotateTabRuns(int) (Java Platform SE 8)
- JTabbedPaneのタブのテキストシフト量を変更する
- [JDK-6855659] Ability to disable tab run rotation - Java Bug System