Swing/FixedSummaryRow のバックアップ差分(No.1)
- バックアップ一覧
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- バックアップ を表示
- Swing/FixedSummaryRow へ行く。
- 1 (2009-10-09 (金) 21:36:06)
- 2 (2013-01-10 (木) 17:35:02)
- 3 (2013-08-31 (土) 01:43:28)
- 4 (2013-10-18 (金) 15:57:59)
- 5 (2014-06-12 (木) 21:33:04)
- 6 (2014-11-01 (土) 00:42:03)
- 7 (2014-11-25 (火) 03:03:31)
- 8 (2015-12-01 (火) 15:00:09)
- 9 (2017-05-30 (火) 20:31:17)
- 10 (2018-05-18 (金) 17:30:27)
- 11 (2020-05-14 (木) 16:19:37)
- 12 (2021-11-07 (日) 05:28:51)
- 13 (2023-07-27 (木) 11:53:02)
- 14 (2023-10-06 (金) 11:25:50)
- 追加された行はこの色です。
- 削除された行はこの色です。
TITLE:JTableにソートされないサマリー行を表示する #navi(../) RIGHT:Posted by [[terai]] at 2009-04-27 *JTableにソートされないサマリー行を表示する [#gb96ab51] JTableの行をソートしても、常に最終行にサマリーを表示します。 -&jnlp; -&jar; -&zip; #screenshot **サンプルコード [#n2f33436] #code{{ public JTable makeTable() { final JTable table = new JTable(model); final RowFilter<TableModel,Integer> filter = new RowFilter<TableModel,Integer>() { @Override public boolean include( Entry<? extends TableModel, ? extends Integer> entry) { int i0 = table.convertRowIndexToView(entry.getIdentifier()); return i0 != 0; } }; final TableRowSorter<TableModel> s = new TableRowSorter<TableModel>(model) { @Override public void toggleSortOrder(int column) { RowFilter<? super TableModel, ? super Integer> f = getRowFilter(); setRowFilter(null); super.toggleSortOrder(column); setRowFilter(f); } }; s.setRowFilter(filter); s.setSortsOnUpdates(true); s.toggleSortOrder(1); table.setRowSorter(s); TableColumnModel col = table.getColumnModel(); for(int i=0;i<col.getColumnCount();i++) { final TableCellRenderer r = table.getDefaultRenderer(model.getColumnClass(i)); col.getColumn(i).setCellRenderer(new TableCellRenderer() { public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { JLabel l; if(row==model.getRowCount()-2) { int i = getSum(table.convertColumnIndexToModel(column)); l = (JLabel)r.getTableCellRendererComponent( table, i, isSelected, hasFocus, row, column); l.setBackground(Color.ORANGE); }else{ l = (JLabel)r.getTableCellRendererComponent( table, value, isSelected, hasFocus, row, column); l.setBackground(Color.WHITE); } l.setForeground(Color.BLACK); return l; } }); } return table; } }} **解説 [#n25f3e6d] 上記のサンプルでは、以下のようにしてサマリー行を作成しています。 -モデルの先頭と末尾にダミー行を追加 --値は、Integer.MIN_VALUEと、Integer.MAX_VALUEでソートしても先頭か末尾にくるようにしておく -ソートでどちらかが先頭行(表示上)になった場合、フィルターでこれを非表示にする **参考リンク [#ve21225c] --[[Sorting Table with Summary Row - Santhosh Kumar's Weblog>http://www.jroller.com/santhosh/date/20070812]] --[[Swing - Sort rows in JTable except the last row>http://forums.sun.com/thread.jspa?threadID=5377030]] **コメント [#gf3adf94] #comment