JTable自体の高さを拡張
Total: 17119
, Today: 1
, Yesterday: 0
Posted by aterai at
Last-modified:
概要
JDK 6
で導入された機能を使用して、JViewport
の高さまでJTable
を拡張します。
Screenshot
Advertisement
サンプルコード
JTable table = new JTable(model);
table.setFillsViewportHeight(true);
JScrollPane scroll = new JScrollPane(table);
scroll.setBackground(Color.RED);
scroll.getViewport().setBackground(Color.GREEN);
// table.setBackground(Color.BLUE);
// table.setBackground(scroll.getBackground());
View in GitHub: Java, Kotlin解説
上記のサンプルでは、チェックボックスの選択状態で、JTable#setFillsViewportHeight(boolean)
を適用するかどうかを切り替えることができます。
getFillsViewportHeight() == false
(デフォルト値)の場合- 下部の余白は
JTable
ではないためJViewport
の背景色(緑)が表示される JScrollPane
、またはJViewport
にsetComponentPopupMenu(...)
でJPopupMenu
は未設定で、マウスリスナーも設定していないため下部の余白で右クリックしてもポップアップメニューは無効
- 下部の余白は
getFillsViewportHeight() == true
の場合JTable
の高さがJViewport
の高さより小さい時は両者が同じ高さになるようにJTable
が拡張されるJTable#setBackground(Color)
で設定した色(薄い黄色)がJTable
下部の余白の背景色となるJTable
自体が拡張されるため余白部分を右クリックしてもポップアップメニューが表示される- 縦スクロールバーとテーブルヘッダで生成される余白(赤)などは
JScrollPane
なので、ポップアップメニューは無効
- 縦スクロールバーとテーブルヘッダで生成される余白(赤)などは
- 簡単に余白部分にドロップしたり、空の
JTable
にドロップが可能- JTableの行をドラッグ&ドロップでは余白にドロップ出来ない
- Fileのドラッグ&ドロップでは
DropTarget
をJTable
、JViewport
の両方に設定する必要がある
JTable#setFillsViewportHeight(true)
を設定していてもJScrollPane
、JViewport
の背景色が以下のように表示される場合があるのでtable.setBackground(scrollPane.getBackground())
などですべて同色揃えることも無意味ではない
scrollPane.setBackground(Color.RED)
- 縦スクロールバーとテーブルヘッダで生成される余白の色
scrollPane.getViewport().setBackground(Color.GREEN)
- 列をドラッグして移動する場合の隙間の色
JTable#setAutoResizeMode(JTable.AUTO_RESIZE_OFF)
としたときの右余白
参考リンク
- JTable#setFillsViewportHeight(boolean) (Java Platform SE 8)
- JTableの背景色を変更
- TableCellRendererでセルの背景色を変更
- Fileのドラッグ&ドロップ
- JTable becomes uglier with AUTO_RESIZE_OFF - Santhosh Kumar's Weblog