Swing/FilteredTable のバックアップの現在との差分(No.6)
- バックアップ一覧
- 差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- バックアップ を表示
- Swing/FilteredTable へ行く。
- 1 (2005-01-30 (日) 22:28:18)
- 2 (2005-02-03 (木) 02:04:01)
- 3 (2005-04-28 (木) 04:32:52)
- 4 (2005-06-27 (月) 06:41:13)
- 5 (2005-10-12 (水) 21:27:40)
- 6 (2006-02-27 (月) 15:54:29)
- 7 (2006-03-28 (火) 11:53:57)
- 8 (2006-08-17 (木) 11:11:15)
- 9 (2006-10-19 (木) 12:51:16)
- 10 (2007-08-22 (水) 11:03:13)
- 11 (2007-09-05 (水) 10:11:04)
- 12 (2008-04-04 (金) 21:11:05)
- 13 (2008-06-11 (水) 16:58:15)
- 14 (2008-06-26 (木) 13:59:17)
- 15 (2013-03-31 (日) 20:04:26)
- 16 (2015-01-16 (金) 21:12:41)
- 17 (2016-07-19 (火) 22:26:16)
- 18 (2016-09-25 (日) 01:16:03)
- 19 (2017-11-05 (日) 20:45:19)
- 20 (2018-09-11 (火) 14:40:21)
- 21 (2020-09-09 (水) 11:25:38)
- 22 (2022-03-19 (土) 11:33:09)
- 追加された行はこの色です。
- 削除された行はこの色です。
#navi(../) *JTableに行フィルターで表示の切り替え [#defef215] >編集者:[[Terai Atsuhiro>terai]]~ 作成日:2005-01-31~ 更新日:&lastmod; --- category: swing folder: FilteredTable title: JTableに行フィルタで表示の切り替え tags: [JTable, DefaultTableModel] author: aterai pubdate: 2005-01-31T07:28:18+09:00 description: JTableに表示する行をフィルタを使用して切り替えます。 image: https://lh5.googleusercontent.com/_9Z4BYR88imo/TQTMpQqDR4I/AAAAAAAAAZg/vitkhyUoKkI/s800/FilteredTable.png --- * 概要 [#summary] `JTable`に表示する行をフィルタを使用して切り替えます。 #contents **概要 [#p22a4681] JTableに表示する行をフィルタを使用して切り替えます。 #download(https://lh5.googleusercontent.com/_9Z4BYR88imo/TQTMpQqDR4I/AAAAAAAAAZg/vitkhyUoKkI/s800/FilteredTable.png) http://terai.xrea.jp/swing/filteredtable/screenshot.png * サンプルコード [#sourcecode] #code(link){{ class TestModel extends DefaultTableModel { public static final String NUMBER = "番号"; public static final String MASTER = "名前"; public static final String COMMENT = "コメント"; private final Vector list = new Vector(); **サンプルコード [#gf3186d0] class TestModel extends DefaultTableModel { public static final String NUMBER = "番号"; public static final String MASTER = "名前"; public static final String COMMENT = "コメント"; private final Vector list = new Vector(); public TestModel() { super(new String[]{NUMBER, MASTER, COMMENT}, 0); } public void addRow(Test tst) { list.add(tst); Integer num = new Integer(list.size()); Object[] obj = {num, tst.getName(), tst.getComment()}; addRow(obj); } public void filterRows(boolean flg) { //Vector v = new Vector(list.size()); dataVector.clear(); for(int i=0;i<list.size();i++) { if(flg && !(i%2==0)) continue; Test t = (Test)list.elementAt(i); Object[] o = new Object[] { new Integer(i+1), t.getName(), t.getComment() }; //v.add(convertToVector(o)); dataVector.add(convertToVector(o)); } //setDataVector(v, columnIdentifiers); fireTableDataChanged(); } } public TestModel() { super(new String[] {NUMBER, MASTER, COMMENT}, 0); } -[[サンプルを起動>http://terai.xrea.jp/swing/filteredtable/sample.jnlp]] -[[jarファイル>http://terai.xrea.jp/swing/filteredtable/sample.jar]] -[[ソース>http://terai.xrea.jp/swing/filteredtable/src.zip]] public void addRow(Test tst) { list.add(tst); Integer num = new Integer(list.size()); Object[] obj = {num, tst.getName(), tst.getComment()}; addRow(obj); } **解説 [#j7d85e1f] 上記のサンプルでは、DefaultTableModelのフィールドにあるdataVectorを表示用に使用し、これとは別にすべての行を保持するVectorを作成しています。例えば、奇数行だけ表示するという条件が選択された場合、この条件に適合する行だけを保持用Vectorから表示用のdataVectorにコピーすることでフィルタリングを行っています。 public void filterRows(boolean flg) { // Vector v = new Vector(list.size()); dataVector.clear(); for (int i = 0; i < list.size(); i++) { if (flg && i % 2 == 0) continue; Test t = (Test) list.elementAt(i); Object[] o = {Integer.valueOf(i + 1), t.getName(), t.getComment()}; // v.add(convertToVector(o)); dataVector.add(convertToVector(o)); } // setDataVector(v, columnIdentifiers); fireTableDataChanged(); } } }} //**参考リンク **コメント [#edc470ff] * 解説 [#explanation] - `DefaultTableModel`のフィールドにある`dataVector`を表示用に使用し、これとは別にすべての行を保持する`Vector`を作成 -- 例えば奇数行だけ表示するという条件が選択された場合、この条件に適合する行だけを保持用`Vector`から表示用の`dataVector`にコピーすることでフィルタリングを実施 * 参考リンク [#reference] - [[RowFilterでJTableの行をフィルタリング>Swing/RowFilter]] -- `JDK 1.6.0`以上の場合、標準で実装されている`TableRowSorter`のフィルタリング機能が使用可能 * コメント [#comment] #comment #comment