2012-03-28 72 views
1
  1. 我使用以下代碼如何將渲染器設置爲jtable上的複選框?

    Object[] ColumnData = {"Sr No","Ward Name","Total voters","Action"}; 
    Object[][] RawData=null; 
    

    //在循環

    model.insertRow(X,新的對象[] {鍵,ward_name_var,total_vot_var渲染器設置爲複選框上的JTable ,new Object [] {o}}); model.setValueAt(o,x,3); tblWard.setModel(model);

    Setchk(tblWard,3,checkbox); //通過調用該方法其中包含以下

    私人無效Setchk(JTable的jTable1,INT I,JCheckBox的複選框) { jTable1.getColumnModel()getColumn(ⅰ).setCellRenderer((新CWCheckBoxRenderer()))。 jTable1.getColumnModel()。getColumn(i).setCellEditor(new CheckBoxCellEditor()); }

塊引用

我們如何可以嘗試爲行設置複選框上的JTable。 在此先感謝。

+2

你是什麼意思'爲一行設置渲染器'。使用的渲染器依賴於特定單元格中的數據(例如,整數需要不同的渲染器,然後是布爾型),並且此數據在每列中具有相同的類型。所以只爲列設置渲染器是有意義的,而不是爲行設置渲染器 – Robin 2012-03-28 10:16:57

回答

2

如果您的數據類型爲Boolean.class,則default render將顯示一個複選框。要更改特定行中的複選框,您需要相應的CellEditor。默認的渲染/編輯器使用here;定製組件如圖所示here

1

您可以簡單地覆蓋JTablegetCellRenderer方法以返回給定行所需的渲染器。例如:

JTable table = new JTable() { 
    TableCellRenderer getCellRenderer(int row, int column) { 
     if (row == checkBoxRow) 
      return myCheckBoxRenderer; 
     else 
      return super.getCellRenderer(row, column); 
    } 
};