TITLE:JTableの行を追加、削除

JTableの行を追加、削除

編集者:Terai Atsuhiro
作成日:2004-06-04
更新日:2023-11-24 (金) 16:03:10

概要

JTableで行の追加と削除を行います。

#screenshot

サンプルコード

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;

解説

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

DefaultTableModelのaddRowメソッドを使用し、オブジェクトの配列を行として追加しています。

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

追加された行を表示するために、getCellRectで行の領域を取得し、scrollRectToVisibleでそこまでスクロールさせています。

参考リンク

コメント