TITLE:JTableの行を追加、削除
#navi(../)
*JTableの行を追加、削除 [#o1339781]
>編集者:[[Terai Atsuhiro>terai]]~
作成日:2004-06-04~
更新日:&lastmod;

#contents

**概要 [#nb0fd907]
JTableで行の追加と削除を行います。

#screenshot

**サンプルコード [#a48c4459]
#code{{
 public class TestModel extends DefaultTableModel {
   public void addTest(Test tst) {
     Object[] obj = {new Integer(number), tst.getName(), tst.getComment()};
     super.addRow(obj);
     number++;
     fireTableDataChanged();
   }
 ......

 private final TestModel model = new TestModel();
 private final TestRenderer renderer = new TestRenderer();
 private final TableSorter sorter;
 private final JTable table;
 private void testCreateActionPerformed(ActionEvent e) {
   model.addTest(new Test("新規の名前", ""));
   //追加された最終行までスクロール
   Rectangle rect = table.getCellRect(model.getRowCount()-1,0,true);
   table.scrollRectToVisible(rect);
   table.repaint();
 }
 private void deleteActionPerformed(ActionEvent evt) {
   int[] ilist = table.getSelectedRows();
   if(ilist==null || ilist.length<=0) return;
   for(int i=ilist.length-1;i>=0;i--) {
     model.removeRow(sorter.modelIndex(ilist[i]));
   }
   table.repaint();
 }
 ......
}}
-&jnlp;
-&jar;
-&zip;

**解説 [#y17790fd]
上記のサンプルでは、ポップアップメニューを使って、行の追加と削除を行っています。

-追加
-- DefaultTableModelのaddRowメソッドを使用し、オブジェクトの配列を行として追加しています。
-- 追加された行が表示されるように、getCellRectで行の領域を取得し、scrollRectToVisibleでそこまでスクロールさせています。

- 削除
-- 複数行の削除に対応するために、indexの大きい方からremoveRowメソッドを使用しています。
-- 行のソートを行っている場合は、TableSorterのmodelIndexメソッドを挟む必要があります。

**参考リンク [#ic4670f1]
-[[JTableの行を全削除>Swing/ClearTable]]

**コメント [#nce8b0f0]
#comment