Swing/TableHeaderHeight のバックアップの現在との差分(No.3)
TITLE:JTableHeaderの高さを変更
Posted by aterai at 2012-05-28
JTableHeaderの高さを変更
JTableHeaderの高さを変更します。-
category: swing
folder: TableHeaderHeight
title: JTableHeaderの高さを変更
tags: [JTableHeader, JTable, JScrollPane, JViewport]
author: aterai
pubdate: 2012-05-28T14:51:47+09:00
description: 内部の文字サイズなどはそのままで、JTableHeaderの高さだけを変更する方法をテストします。
image:
hreflang:
href: https://java-swing-tips.blogspot.com/2012/06/height-of-jtableheader.html lang: en
概要
内部の文字サイズなどはそのままで、JTableHeader
の高さだけを変更する方法をテストします。
- &jnlp;
- &jar;
- &zip;
Screenshot
Advertisement
サンプルコード
サンプルコード
JScrollPane scroll = new JScrollPane(table);
scroll.setColumnHeader(new JViewport() {
@Override public Dimension getPreferredSize() {
Dimension d = super.getPreferredSize();
d.height = 32;
return d;
}
});
View in GitHub: Java, Kotlin解説
- 上
- JTableHeaderにnull(デフォルト)以外のサイズをsetPreferredSize(...)で設定
- JTable.AUTO_RESIZE_OFFの場合、設定されたこのサイズが列の追加や列幅の変更で更新されない(仕様?)ため、ヘッダの描画が不正になる
- JTable.AUTO_RESIZE_OFF以外の場合は、setPreferredSize(...)で設定された幅は無視されて、JTableの幅が使用される
解説
- 上:
Bad: JTableHeader#setPreferredSize(...)
-
JTableHeader
にnull
(デフォルト)以外のサイズをsetPreferredSize(...)
で設定 - 列幅の調整を自動的に行わない
JTable.AUTO_RESIZE_OFF
モードの場合、設定されたこのサイズが列の追加や列幅の変更で更新されないためヘッダの描画が不正になる -
JTable.AUTO_RESIZE_OFF
以外の場合はsetPreferredSize(...)
で設定された幅は無視されてJTable
の幅が使用される
-
- 下
- JViewport#getPreferredSize()もしくは、JTableHeader#getPreferredSize()をオーバーライドして、JTableHeaderの高さを変更
- 下:
Override getPreferredSize()
-
JViewport#getPreferredSize()
もしくはJTableHeader#getPreferredSize()
をオーバーライドしてJTableHeader
の高さを変更table.setTableHeader(new JTableHeader(table.getColumnModel()) { @Override public Dimension getPreferredSize() { Dimension d = super.getPreferredSize(); d.height = 32; return d; } });
- viewport.setPreferredSize(...) と設定しても可…?
- JTableHeader#getHeight()をオーバーライドすると、ヘッダ文字列などの描画だけ(getHeight()はJTableHeader#getHeaderRect()で使用されている)変更される
-
viewport.setPreferredSize(...)
と設定しても可? -
JTableHeader#getHeight()
をオーバーライドするとヘッダ文字列などの描画だけ変更される-
getHeight()
はJTableHeader#getHeaderRect()
で使用されているため
-
-
参考リンク
- JTableのJTalbeHeaderの高さを変更して列幅の合計が1200ピクセルを超えて横スクロールするとバグった。 - kensir0uのしくみ
- このバグ?の状態を適切に示す良いサンプルコードがあります。
参考リンク
- JTableのJTalbeHeaderの高さを変更して列幅の合計が1200ピクセルを超えて横スクロールするとバグった。 - kensir0uのしくみ
- このバグ?の状態を適切に示す良いサンプルコードがある
- JDK-4473075 JTable header rendering problem (after setting preferred size) - Java Bug System
-
JDK 9
で修正されている
-