19 Aralık 2019 Perşembe

Swing JTable Sınıfı - Izgara Bileşeni

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 - rowData + columnNames
Şöyle yaparız.
String heading[] = {"Username", "Groupname", "Groupstatus"};
String data[][] = new String[10][heading.length];
...
table  = new JTable(data, heading);
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.
Örnek
Şöyle yaparız.
table.getColumn("Price").setMaxWidth(30);
getColumnModel metodu
TableColumnModel döner. Şöyle yaparız.
table.getColumnModel().getColumn(0).setPreferredWidth(40);
table.getColumnModel().getColumn(1).setPreferredWidth(40);
getModel metodu
Örnek
Şöyle yaparız.
TableModel model = table.getModel ();
Örnek
Şöyle yaparız.
public void resetArea(JTable table) {

  DefaultTableModel dm = (DefaultTableModel)table.getModel();
  while(dm.getRowCount() > 0) {
    dm.removeRow(0);
  }
}
setBorder metodu
Şöyle yaparız.
table.setBorder(new MatteBorder(2, 2, 2, 2, (Color) Color.GRAY));
setModel metodu
Şöyle yaparız.
table.setModel(new DefaultTableModel(
    new Object[][] {
        {"Webnet", "11"},
        {"Clone Corp", "12"},
        {"City Bank", "15"},
        {"Herbmart", "14"},
        {"Digital Systems", "17"},
        {"National Airlines", "10"},
        {"State Power", "16"},
        {"Parkland", "13"},
    },
    new String[] {
        "Stock", "Price"
    }
));
setTableHeader metodu
Şöyle yaparız.
table.getTableHeader().setBackground(new Color(0,102,102));
table.getTableHeader().setForeground(Color.WHITE);
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;
}
removeEditor metodu
JTable edit modundaysa sonladırır.
Örnek
Şöyle yaparız
table.removeEditor();
setAutoCreateRowSorter metodu
Şöyle yaparız.
table.setAutoCreateRowSorter(true);
setAutoResizeMode metodu
AUTO_RESIZE_ALL_COLUMNS ile her sütunu genişletir.

Örnek
Otomatik sütun büyüklüğünü değiştirmek için şöyle yaparız. Swing JTable Sınıfı Auto Fit yazısına bakabilirsiniz.
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
setBackground metodu
Şöyle yaparız.
table.setBackground(new Color(161,158,152));
setBorder metodu
Şöyle yaparız.
table.setBorder(new LineBorder(new Color(0,102,102), 2, true));
setDefaultCellEditor metodu
Şöyle yaparız.
table.setDefaultEditor(Cell.class, new MyTableCellEditor());
setFont metodu
Şöyle yaparız.
table.setFont(new Font("", 0, 14));
setFillsViewportHeight metodu
Şöyle yaparız.
table.setFillsViewportHeight(true);
setModel metodu
Tablonun sütun ve satırları modelden gelir. DefaultTableModel nesnesi alabilir. Bu çağrı kendi içinde fireTableDataChanged() metodunu tetikler.

Örnek
Şö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