24 Nisan 2018 Salı

Swing JTable Sınıfı

Giriş
Şu satırı dahil ederiz.
import javax.swing.JTable;
Bu sınıf view olarak kullanılabilir. Şöyle yaparız.
scrollPane.setViewportView (table);
Diğer
JTable hangi sütunların editable olduğunu TableModel sınıfına sorar. TableModel sınıfının isCellEditable() metodunu kullanır. Gösterilecek verinin tipini yine TableModel'in getColumnClass metodu ile anlar. Eğer bu metod Boolean dönerse checkbox ile gösterir.

Renderer hücrenin değerini gösterirken kullanılır.
Editor ise hücrenin değerini düzenlerken kullanılır.

model'e insertRow() metodu ile satır eklenince tablomuz da değişir.

constructor
Şöyle yaparız.
JTable table = new JTable();
constructor - model
Şöyle yaparız.
DefaultTableModel model = new DefaultTableModel();
model.setColumnIdentifiers(new Object[] {"Column 1", "Column 2", "Column 3" });

JTable table = new JTable(model);
constructor - int + int
Şöyle yaparız.
JTable table = new JTable(5, 7);
addMouseListener metodu
Şöyle yaparız.
table.addMouseListener(new MouseAdapter(){
  public void mouseClicked(MouseEvent event) {
    if (SwingUtilities.isRightMouseButton(event)) {
      ...
    }
  }
});
changeSelection Sınıfı
Son satırı seçmek için şöyle yaparız.
table.changeSelection(list.size() - 1, 0, false, false);
columnAdded metodu
Şöyle yaparız.
JTable table = new JTable(5, 7){
  @Override
  public void columnAdded(TableColumnModelEvent e){
    TableColumn i = getColumnModel().getColumn(e.getToIndex());
    i.setPreferredWidth(80);
  }
};
editingStopped metodu
Edit işlemi bitince çağrılır. Bu metodun çağrılma sebebinin açıklaması şöyle.
1.using the enter key
2.tabbing to the next cell
3.clicking on another cell with the mouse
Bu metodu elle de çağırabiliriz. Şöyle yaparız.
table.editingStopped(new ChangeEvent(table));
getCellEditor metodu
TableCellEditor nesnesi döner. Şöyle yaparız.
TableCellEditor editor = table.getCellEditor();
if (editor != null) {
  editor.stopCellEditing();
}
getColumn metodu
TableColumn nesnesi döner. TableColumn nesnesinin setCellRenderer() ve setCellEditor() metodları çağrılarak sütunda gösterilecek combobox gibi şeyler atanabilir.

getColumnModel metodu
TableColumnModel döner. Şöyle yaparız.
table.getColumnModel().getColumn(0).setPreferredWidth(40);
table.getColumnModel().getColumn(1).setPreferredWidth(40);
getModel metodu
Şöyle yaparız.
TableModel model = table.getModel ();
getSelectedRow metodu
Örnek
Şöyle yaparız. Seçili satır yoksa -1 döner.
int row = table.getSelectedRow();
Örnek
Şöyle yaparız.
int viewIndex = table.getSelectedRow();
if(viewIndex != -1) {
  int modelIndex = table.convertRowIndexToModel(viewIndex);
  model = (DefaultTableModel)jTable1.getModel();
  model.removeRow(modelIndex);
}  
isCellEditable metodu
Şöyle yaparız.
public boolean isCellEditable(int row, int col) {
  return false;
}
prepareRenderer metodu
Örnek
Zebra için şöyle yaparız.
public Component prepareRenderer(TableCellRenderer r, int row, int col) {
  Component c = super.prepareRenderer(r, row, col);

  // Rows alternate in colour for readability.
  if (row % 2 == 0) {
    c.setBackground(Color.WHITE);
  } else {
    c.setBackground(new Color(234, 234, 234));
  }

  if (isRowSelected(row)) {
    c.setBackground(new Color(24, 134, 254));
  }

  return c;
}
setAutoCreateRowSorter metodu
Şöyle yaparız.
table.setAutoCreateRowSorter(true);
setAutoResizeMode metodu
AUTO_RESIZE_ALL_COLUMNS ile her sütunu genişletir.

Şöyle yaparız.
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
setDefaultCellEditor metodu
Şöyle yaparız.
table.setDefaultEditor(Cell.class, new MyTableCellEditor());
setFont metodu
Şöyle yaparız.
table.setFont(new Font("", 0, 14));
setModel metodu
Tablonun sütun ve satırları modelden gelir. DefaultTableModel nesnesi alabilir. Şöyle yaparız.
DefaultTableModel model = ...;
table.setModel (model);
setRowHeight metodu
Belirtilen satırın yüksekliğini ayarlar.
Örnek
Birinci satırı değiştirmek için şöyle yaparız.
table.setRowHeight(1, 30);
Örnek
Şöyle yaparız.
table.setRowHeight(table.getRowHeight() + 10);
setSelectionMode metodu
Şöyle yaparız.
table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);

Hiç yorum yok:

Yorum Gönder