JTabbedPaneのタブタイトル文字列を回転して縦組表示する
Total: 2275
, Today: 1
, Yesterday: 4
Posted by aterai at
Last-modified:
概要
JTabbedPane
のタブタイトル文字列をタブ配置の左右に応じて回転して縦長になるよう設定します。
Screenshot
Advertisement
サンプルコード
private Icon makeVerticalTabIcon(String title, Icon icon, boolean clockwise) {
JLabel label = new JLabel(title, icon, SwingConstants.LEADING);
label.setBorder(BorderFactory.createEmptyBorder(0, 2, 0, 2));
Dimension d = label.getPreferredSize();
int w = d.height;
int h = d.width;
BufferedImage bi = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB);
Graphics2D g2 = (Graphics2D) bi.getGraphics();
AffineTransform at = clockwise
? AffineTransform.getTranslateInstance(w, 0)
: AffineTransform.getTranslateInstance(0, h);
at.quadrantRotate(clockwise ? 1 : -1);
g2.setTransform(at);
SwingUtilities.paintComponent(g2, label, this, 0, 0, d.width, d.height);
g2.dispose();
return new ImageIcon(bi);
}
View in GitHub: Java, Kotlin解説
上記のサンプルでは、タイトル文字列とアイコンからJLabel
を作成しこれを90
度回転してImageIcon
に変換し、そのアイコンのみ(タイトル文字列はnull
)をJTabbedPane#addTab(...)
で追加して横長ではなく縦長のタブを表示しています。
- 左:
JTabbedPane#setTabPlacement(LEFT)
- タブ用の
JLabel
の幅だけy
軸方向に移動し、反時計回りに90
度回転したJLabel
を描画するIcon
を縦長タブとして使用
- タブ用の
- 右:
JTabbedPane#setTabPlacement(RIGHT)
- タブ用の
JLabel
の高さだけx
軸方向に移動し、時計回りに90
度回転したJLabel
を描画するIcon
を縦長タブとして使用
- タブ用の
参考リンク
- Iconを回転する
- JTableHeaderの列タイトル文字列を回転して垂直表示する
- アイコンは回転したくない場合はリンク先のサンプルのようにあらかじめ文字列の回転とは逆方向に
90
度回転しておく
- アイコンは回転したくない場合はリンク先のサンプルのようにあらかじめ文字列の回転とは逆方向に