JScrollPaneの行ヘッダを右側に変更する
Total: 3252, Today: 2, Yesterday: 1
Posted by aterai at
Last-modified:
Summary
JScrollPaneのレイアウトマネージャを使用して、行ヘッダをデフォルトの左側から右側に変更します。
Screenshot

Advertisement
Source Code Examples
class RightFixedScrollPaneLayout extends ScrollPaneLayout {
@Override public void layoutContainer(Container parent) {
// ...
// if (leftToRight) {
// rowHeadR.x = availR.x;
// availR.x += rowHeadWidth;
// } else {
// rowHeadR.x = availR.x + availR.width;
// }
rowHeadR.x = availR.x + availR.width;
// ...
// adjustForVSB(vsbNeeded, availR, vsbR, vpbInsets, leftToRight);
adjustForVSB(vsbNeeded, rowHeadR, vsbR, vpbInsets, leftToRight);
View in GitHub: Java, KotlinDescription
JScrollPane#setRowHeaderView(...)で行ヘッダを設定した場合、デフォルト(ComponentOrientation.LEFT_TO_RIGHT)では左側に配置される- 以下のような設定で行ヘッダを右側に配置可能だが垂直
JScrollBarが左側になるtable.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT); scroll.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT); scroll.setCorner(ScrollPaneConstants.UPPER_RIGHT_CORNER, fixedTable.getTableHeader());
- 以下のような設定で行ヘッダを右側に配置可能だが垂直
ScrollPaneLayout#layoutContainer(...)メソッドをオーバーライドして行ヘッダや垂直JScrollBarの位置を直接変更する- 行ヘッダの位置:
ComponentOrientation.RIGHT_TO_LEFTが設定されている場合と同じになるよう修正 - 垂直
JScrollBarの位置:adjustForVSB(...)メソッドの引数にJViewportではなく行ヘッダのRectangleを渡すよう修正- このため
JViewportの右側ではなく行ヘッダの右側に垂直JScrollBarが配置され、JViewportの幅ではなく行ヘッダの幅が垂直JScrollBarの幅だけ縮小される
- このため
- 行ヘッダの位置: