TITLE:JTableの行を全削除

JTableの行を全削除

Posted by terai at 2005-04-11
  • category: swing folder: ClearTable title: JTableの行を全削除 tags: [JTable, DefaultTableModel] author: aterai pubdate: 2005-04-11T02:13:34+09:00 description: JTableのモデルから、カラムヘッダの状態は変更せず、すべての行を一括で削除します。 image: https://lh5.googleusercontent.com/_9Z4BYR88imo/TQTJISEHcVI/AAAAAAAAAT4/syR1Ucd5n5o/s800/ClearTable.png

概要

JTableのモデルから、カラムヘッダの状態は変更せず、すべての行を一括で削除します。

概要

JTableの行を一括で全削除します。
  • &jnlp;
  • &jar;
  • &zip;

#screenshot

サンプルコード

#spanend
#spandel
button.addActionListener(new AbstractAction("全消去") {
#spanend
  public void actionPerformed(ActionEvent ae) {
    //DefaultTableModel model = (DefaultTableModel)table.getModel();
    //model.clear();
#spanadd
* サンプルコード [#sourcecode]
#spanend
#spanadd
#code(link){{
#spanend
#spanadd
button.addActionListener(new AbstractAction("clear") {
#spanend
  @Override public void actionPerformed(ActionEvent e) {
    DefaultTableModel model = (DefaultTableModel) table.getModel();
    model.setRowCount(0);
  }
});

解説

モデルがDefaultTableModelを継承しているなら、setRowCount(0)ですべての行を削除することができます。この場合、モデルを作り直している訳ではないので、カラムの幅などは削除する前と同じ値を保っています。

解説

  • TableModelDefaultTableModelを継承している場合、model.setRowCount(0)ですべての行が削除可能
  • 空のTableModelJTableに設定すれば行の全削除を行うことが可能だが、ヘッダモデルの再作成が発生しカラム幅や順番などが初期化されてしまう
    • JTable#setAutoCreateColumnsFromModel(false)とカラムをモデルから自動生成しないようにしておけばTableModelを入れ替えても列幅などは保存される
      #spanend
      #spanadd
      table.setAutoCreateColumnsFromModel(false);
      #spanend
      #spanadd
      table.setModel(new DefaultTableModel());
      #spanend
      #spanadd
      
DefaultTableModelを継承していない場合は、モデルに以下の要領*1で行を全削除するメソッドを実装します。
  • -
  • DefaultTableModelを継承していない場合は、モデルに以下の要領(詳細はDefaultTableModel.javaのソースを参照)で行を全削除するメソッドを実装する必要がある
    public void clear() {
      //以下のdataVectorは実装に合わせて変更してください
      // 以下のdataVectorは実装に合わせて変更する
      int size = dataVector.size();
      dataVector.clear();
      fireTableRowsDeleted(0, size-1);
      //fireTableDataChanged();
      fireTableRowsDeleted(0, size - 1);
      // fireTableDataChanged();
    }
    

参考リンク

参考リンク

コメント

コメント