Swing/TableScrollPaneCornerComponent のバックアップ(No.2)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- Swing/TableScrollPaneCornerComponent へ行く。
- 1 (2022-12-12 (月) 02:17:41)
- 2 (2023-09-19 (火) 16:02:12)
- category: swing folder: TableScrollPaneCornerComponent title: JTableを配置したJScrollPaneの右上コーナー区画に配置されるコンポーネントを取得する tags: [JTable, JScrollPane, NimbusLookAndFeel] author: aterai pubdate: 2022-12-12T02:15:41+09:00 description: JTableを配置したJScrollPaneの右上コーナー区画に配置されるコンポーネントを取得し、JTableの幅よりJViewportの幅が大きくなる場合はそれを非表示に切り替えます。 image: https://drive.google.com/uc?id=1nqCfEV8SYYSqtuDAamPo_CR8a7ECIc7s
概要
JTable
を配置したJScrollPane
の右上コーナー区画に配置されるコンポーネントを取得し、JTable
の幅よりJViewport
の幅が大きくなる場合はそれを非表示に切り替えます。
Screenshot
Advertisement
サンプルコード
// System.out.println(UIManager.get("Table.scrollPaneCornerComponent"));
JTable table = new JTable(15, 3) {
@Override public boolean getScrollableTracksViewportWidth() {
Container c = SwingUtilities.getAncestorOfClass(JScrollPane.class, this);
if (c instanceof JScrollPane) {
JScrollPane scroll = (JScrollPane) c;
Component ur = scroll.getCorner(ScrollPaneConstants.UPPER_RIGHT_CORNER);
if (ur != null) {
ur.setVisible(getPreferredSize().width >= scroll.getViewport().getWidth());
}
}
return super.getScrollableTracksViewportWidth();
}
};
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
View in GitHub: Java, Kotlin解説
- 上:
NimbusLookAndFeel
のデフォルトではJTable
を配置したJScrollPane
の右上コーナー区画にはUIManager.put("Table.scrollPaneCornerComponent", c)
でコンポーネントが配置されているMetalLookAndFeel
やWindowsLookAndFeel
のデフォルトはnull
- 下:
JTable#getScrollableTracksViewportWidth()
メソッドをオーバーライドしてJTable
の幅(すべての列幅の合計)よりJViewport
の幅が大きくなる場合は、scroll.getCorner(ScrollPaneConstants.UPPER_RIGHT_CORNER)
で取得した右上コーナーコンポーネントを非表示に切り替えMetalLookAndFeel
やWindowsLookAndFeel
のデフォルト右上コーナーコンポーネントはnull
なので常に非表示状態