Swing/PlaceholderForEmptyTable のバックアップ差分(No.1)
- バックアップ一覧
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- バックアップ を表示
- Swing/PlaceholderForEmptyTable へ行く。
- 1 (2010-09-18 (土) 12:12:50)
- 2 (2010-09-18 (土) 20:19:21)
- 3 (2012-12-27 (木) 07:48:04)
- 4 (2014-06-03 (火) 21:22:22)
- 5 (2014-10-09 (木) 02:05:42)
- 6 (2014-12-02 (火) 01:50:06)
- 7 (2016-02-23 (火) 14:21:14)
- 8 (2017-07-14 (金) 15:04:32)
- 9 (2018-02-24 (土) 19:51:30)
- 10 (2018-03-02 (金) 14:13:50)
- 11 (2020-03-11 (水) 19:22:53)
- 12 (2021-08-27 (金) 11:47:30)
- 13 (2024-02-10 (土) 17:38:35)
- 追加された行はこの色です。
- 削除された行はこの色です。
TITLE:JTableが空の場合、中央にJComponentを表示する #navi(../) RIGHT:Posted by [[terai]] at 2010-09-13 *JTableが空の場合、中央にJComponentを表示する [#rde6e8d9] JTableが空の場合、表領域の中央に任意のJComponentが表示されるように設定します。 -&jnlp; -&jar; -&zip; #screenshot **サンプルコード [#qf7e20d3] #code{{ table.setFillsViewportHeight(true); table.setLayout(new GridBagLayout()); table.add(hint); }} **解説 [#d4225e0d] 上記のサンブルでは、JTableに編集不可にしたJEditorPaneを追加し、以下のように設定して、常に中央にレイアウトされるように設定しています。 -JTable#setFillsViewportHeight(true) として、JTableの高さがJViewportの高さより小さい場合、両者が同じ高さになるように設定 -JTableのレイアウトを null から、GridBagLayout に変更 追加したJEditorPaneの表示非表示の切り替えは、ポップアップメニューで行の追加削除を行ったとき、JTable#getRowCount()==0かどうかで判断しています。 #code{{ private class TablePopupMenu extends JPopupMenu { private final Action deleteAction = new AbstractAction("delete") { @Override public void actionPerformed(ActionEvent e) { JTable table = (JTable)getInvoker(); DefaultTableModel model = (DefaultTableModel)table.getModel(); int[] selection = table.getSelectedRows(); if(selection==null || selection.length<=0) return; for(int i=selection.length-1;i>=0;i--) { model.removeRow(table.convertRowIndexToModel(selection[i])); } if(table.getRowCount()==0) editor.setVisible(true); } }; //...... }} //**参考リンク **コメント [#tbc8d393] #comment