Swing/FillsViewportHeight のバックアップ(No.17)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- Swing/FillsViewportHeight へ行く。
- 1 (2007-08-20 (月) 11:28:51)
- 2 (2007-08-20 (月) 15:35:51)
- 3 (2007-08-21 (火) 13:21:59)
- 4 (2007-08-22 (水) 10:59:22)
- 5 (2007-08-24 (金) 15:41:28)
- 6 (2008-04-04 (金) 19:18:47)
- 7 (2008-08-26 (火) 16:00:37)
- 8 (2011-03-13 (日) 03:32:09)
- 9 (2013-02-01 (金) 11:31:56)
- 10 (2015-01-07 (水) 16:20:24)
- 11 (2016-04-19 (火) 16:01:55)
- 12 (2016-05-31 (火) 14:55:35)
- 13 (2017-03-28 (火) 15:11:28)
- 14 (2018-02-06 (火) 15:26:32)
- 15 (2018-10-19 (金) 16:52:36)
- 16 (2020-10-15 (木) 10:00:29)
- 17 (2022-08-03 (水) 11:01:16)
- 18 (2025-01-03 (金) 08:57:02)
- 19 (2025-01-03 (金) 09:01:23)
- 20 (2025-01-03 (金) 09:02:38)
- 21 (2025-01-03 (金) 09:03:21)
- 22 (2025-01-03 (金) 09:04:02)
- 23 (2025-06-19 (木) 12:41:37)
- 24 (2025-06-19 (木) 12:43:47)
- category: swing
folder: FillsViewportHeight
title: JTable自体の高さを拡張
tags: [JTable, JScrollPane, JViewport, JPopupMenu]
author: aterai
pubdate: 2007-08-20T11:28:51+09:00
description: JDK 6で導入された機能を使用して、JViewportの高さまでJTableを拡張します。
image:

概要
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したりリスナーを設定していないため下部の余白で右クリックしてもポップアップメニューは無効
- 下部の余白は
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
