11 Haziran 2018 Pazartesi

Swing DefaultTableModel Sınıfı

Giriş
Şu satırı dahil ederiz.
import javax.swing.table.DefaultTableModel;
Açıklaması şöyle. Tabloda gösterilecek sütun ve satırları tutar.
DefaultTableModel is backed by a Vector, which manages the row/column data.
AbstractTableModel sınıfından kalıtır.
import javax.swing.table.AbstractTableModel;
JTable sınıfı ile kullanılır. Şöyle yaparız.
JTable table = ...;
DefaultTableModel model = ...;

table.setModel(Tmodel);
constructor
Şöyle yaparız.
DefaultTableModel model = new DefaultTableModel();
cosntructor - rowCount + columnCount
Şöyle yaparız.
DefaultTableModel model = new DefaultTableModel(0,0);
constructor - String [] columnNames + int rowCount
Şöyle yaparız.
String[] columnNames = {"Company", "Stock Price"};

DefaultTableModel model = new DefaultTableModel(columnNames, 0);
constructor - Object [][] data + String [] columnNames
Şöyle yaparız. İlk parametre iki boyutlu veri dizisidir. İkinci parametre ise sütun isimleridir.
String[] columNames = new String[] {"ID", "Country", "Status", "Person"};

Object[][] content = new Object[elements.size()][4];

for(int i=0; i< 10; i++) {  content[i][0] = "...";
  content[i][1] = "...";  content[i][2] = "...";  content[i][3] = "...";}

DefaultTableModel model = new DefaultTableModel (content,columNames);
constructor - Vector data + Vector columnNames
Şöyle yaparız.
Vector<String[]> rows = ...;
Vector<String> columnNames = ...;

DefaultTableModel model = new DefaultTableModel(rows, columnNames);
constructor
Şöyle yaparız.
DefaultTableModel model = (DefaultTableModel)table.getModel();
addColumn metodu
Şöyle yaparız.
DefaultTableModel model = (DefaultTableModel)table.getModel();
model.addColumn("PayDate");
model.addColumn("Ammount");
model.addColumn("LinkId");
model.addColumn("BranchNo");
addRow metodu - Object []
Metodun imzası şöyle. En sona yeni bir satır ekler.
public void addRow(Object[] rowData);
Şöyle yaparız.
Object[] row = {...,...};
model.addRow(row);
addRow metodu - Vector
Metodun imzası şöyle. En sona yeni bir satır ekler.
public void addRow(Vector rowData);
addTableModelListener metodu
Tabloda değişiklik olursa çağrıılr. Örneğin yeni bir satır eklenirse şöyle yaparız.
model.addTableModelListener(new TableModelListener() {
  @Override public void tableChanged(final TableModelEvent e) {
    EventQueue.invokeLater(new Runnable() {
      @Override public void run() {
        table.setRowHeight(e.getFirstRow(), 15); //replace 15 with your own height
      }
    });
  }
});
getColumnClass metodu
Örnek
Şöyle yaparız.
@Override
public Class getColumnClass(int columnIndex) {
  if (getRowCount() > 0) {
    Object value = getValueAt(0, columnIndex);
    if (value instanceof JPanel) {
      return JPanel.class;
    }
  }
  return Object.class;
}
Örnek
Şöyle yaparız.
@Override
public Class getColumnClass(int column) {
  switch (column) {
    case 0:
      return Integer.class;
    ...

  }
}
getColumnCount metodu
Şöyle yaparız.
@Override
public int getColumnCount() {
  return headings.length;
}
getColumnName metodu
Şöyle yaparız.
@Override
public String getColumnName(int column) {
  return list.get(column).getTitle();
}
getRowCount metodu
Şöyle yaparız.
@Override
public int getRowCount() {
  return theData.size();
}
getValueAt metodu
Örnek
Şöyle yaparız.
@Override
public Object getValueAt(int row, int col) {
  return theData.get(row)[col];
}
Örnek
Şöyle yaparız.
Object obj = model.getValueAt (1, 1);
isCellEditable metodu
Örnek
Şöyle yaparız.
public boolean isCellEditable(int row, int col) {
  return true;
}
Örnek
Şöyle yaparız.
@Override
public boolean isCellEditable(int rowIndex, int columnIndex) {
  return getColumnClass(columnIndex) == JPanel.class;
}
insertRow metodu
Tablonun tekrar çizilmesine sebep olur bu yüzden UI thread içinde çağrılmalıdır. Belirtilen konuma yeni bir satır eklemek için şöyle yaparız.
for (int count = 0; count < 3; count++){
  model.insertRow(count, new Object[] { count, "name", "age"});
}
removeRow metodu
Tablonun tekrar çizilmesine sebep olur bu yüzden UI thread içinde çağrılmalıdır. Silinen satır tablonun SelectionModel nesnesinden de silinir.

setColumnIdentifiers metodu
Sütun isimlerini vermek içindir.
Örnek
Şöyle yaparız.
model.setColumnIdentifiers(new Object[] {"Column 1", "Column 2", "Column 3" });
Şöyle yaparız.
String header[] = new String[]{"SOURCE ID", "LATTITUDE", "LONGITUDE"};
model.setColumnIdentifiers(header);
setRowCount metodu
Şöyle yaparız.
DefaultTableModel model = (DefaultTableModel)jTable.getModel();
model.setRowCount(0);
setValueAt metodu
İmzası şöyle. Düzenleme (Editing) işlemi bitince bu metod tetiklenir.
public void setValueAt(Object value, int row, int col);

Hiç yorum yok:

Yorum Gönder