DefaultTableModel in java

Cách 1:

Code nhanh:(chưa hiểu đối tượng)


//========================================
DefaultTableModel model = new DefaultTableModel();
ArrayList arrCols = new ArrayList();
arrCols.add("Mã Đề Thi");
arrCols.add("Số lượng câu hỏi");
arrCols.add("Thời gian làm đề");
arrCols.add("Mô tả");
model.setColumnIdentifiers(arrCols.toArray());

ArrayList arrRows = new ArrayList();
for (int i = 0; i < listDT.size(); i++) {
arrRows.add(listDT.get(i).getIdDeThi());
arrRows.add(listDT.get(i).getSoCauHoi());
arrRows.add(listDT.get(i).getThoiGian());
arrRows.add(listDT.get(i).getMoTa());

model.addRow(arrRows.toArray());
arrRows.clear();
}

chonMTDT.setListDeThi(model);
//====================================
public void setListDeThi(DefaultTableModel model){
tblDeThi.setModel(model);
}



Cách 2:

Bản chất đối tượng




import java.awt.BorderLayout;
import java.awt.GridLayout;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;

class SampleSortingTableModel extends AbstractTableModel implements TableModelListener {
  protected TableModel base;

  protected int sortColumn;

  protected int[] row;

  public SampleSortingTableModel(TableModel tm, int sortColumn) {
    this.base = tm;
    this.sortColumn = sortColumn;
    tm.addTableModelListener(this);
    rebuild();
  }

  public Class getColumnClass(int c) {
    return base.getColumnClass(c);
  }

  public int getColumnCount() {
    return base.getColumnCount();
  }

  public String getColumnName(int c) {
    return base.getColumnName(c);
  }

  public int getRowCount() {
    return base.getRowCount();
  }

  public Object getValueAt(int r, int c) {
    return base.getValueAt(row[r], c);
  }

  public boolean isCellEditable(int r, int c) {
    return base.isCellEditable(row[r], c);
  }

  public void setValueAt(Object value, int r, int c) {
    base.setValueAt(value, row[r], c); // Notification will cause re-sort
  }

  public void tableChanged(TableModelEvent event) {
    rebuild();
  }

  protected void rebuild() {
    int size = base.getRowCount();
    row = new int[size];
    for (int i = 0; i < size; i++) {
      row[i] = i;
    }
    sort();
  }

  protected void sort() { // Sort and notify listeners
    for (int i = 1; i < row.length; i++) {
      int j = i;
      while (j > 0 && compare(j - 1, j) > 0) {
        int temp = row[j];
        row[j] = row[j - 1];
        row[j - 1] = temp;
        j--;
      }
    }
    fireTableStructureChanged();
  }

  protected int compare(int i, int j) {
    String s1 = base.getValueAt(row[i], sortColumn).toString();
    String s2 = base.getValueAt(row[j], sortColumn).toString();
    return s1.compareTo(s2);
  }
}

public class SortableTableModelAbstractTableModel extends JFrame {
  DefaultTableModel model = new DefaultTableModel(new Object[][] { { "this", "1" },
      { "text", "2" }, { "will", "3" }, { "be", "4" }, { "sorted", "5" } }, new Object[] {
      "Column 1", "Column 2" });

  public SortableTableModelAbstractTableModel() {
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    JTable tableOrig = new JTable(model);
    tableOrig.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
    JTable tableSorted = new JTable(new SampleSortingTableModel(model, 0));
    tableSorted.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
    JPanel panel = new JPanel(new GridLayout(1, 2));
    panel.add(new JScrollPane(tableOrig));
    panel.add(new JScrollPane(tableSorted));
    getContentPane().add(panel, BorderLayout.CENTER);
    pack();
  }

  public static void main(String arg[]) {
    new SortableTableModelAbstractTableModel().setVisible(true);
  }
}

Nguồn tham khảo:

http://www.java2s.com/Tutorial/Java/0240__Swing/CreateDefaultTableModel.htm