簡體   English   中英

如何在jtable中動態設置jcheckbox

[英]how to set jcheckbox inside jtable dynamically

在此圖片中,返回表頭的值顯示在復選框中。

在這里jtable來自數據庫的值

我嘗試了它,但由於將布爾值強制轉換為字符串而發生了classcastexception

我不知道為什么會發生這個錯誤

在此處輸入圖片說明

這是我的代碼

    static Object[][] data;
String[] colName = {"Book", "Member", "Issue Date", "Return Date ",
        "Remark","Return" };

List<Issue>issues=ServiceFactory.getIssueServiceImpl().findAllIssue();
data=new Object[issues.size()][6];


for(Issue issue:issues){

    data[i][0]=issue.getMemberId().getName();
    data[i][1]=issue.getBookId().getName();
    data[i][2]=issue.getIssueDate();
    data[i][3]=issue.getReturnDate();
    data[i][4]=issue.getRemark();
    data[i][5]=issue.getStatus();

    i++;
}

這里發生異常

 DefaultTableModel  dtm = new DefaultTableModel(data, colName);{
     public Class getColumnClass(int c) {
         switch (c) {
           case 0: return Boolean.class;
           default: return String.class;
         }   
       } };
 retunTable = new JTable();
 retunTable.setModel(dtm);
 retunTable.getTableHeader().setReorderingAllowed(false);


return retunTable;

如果您知道這一點,請在這里分享答案...

編輯

      DefaultTableModel dtm = new DefaultTableModel(data, colName);{
    public Class getColumnClass(int c) {
         switch (c) {
           case 0: return Boolean.class;
           default: return String.class;
         }   
       } };

     dtm .addRow(data); 
 retunTable = new JTable();
 retunTable.setModel(dtm);
 retunTable.getTableHeader().setReorderingAllowed(false);


return retunTable;

從您的示例和代碼來看,這對我來說似乎是錯誤的...

DefaultTableModel  dtm = new DefaultTableModel(data, colName);{
    public Class getColumnClass(int c) {
        switch (c) {
            case 0: return Boolean.class;
            default: return String.class;
        }   
    } 
};

0列不是“書”嗎?或更重要的是, issue.getMemberId().getName()

不應該...

DefaultTableModel  dtm = new DefaultTableModel(data, colName);{
    public Class getColumnClass(int c) {
        return c == 5 ? Boolean.class : String.class
    } 
};

第5欄的“返回”在哪里?

您需要為JTable的單元格使用單元格編輯器。 您可以將DefaultCellEditor用於列,並使用將JTextField用作輸入參數的構造函數。

例如,如果表的第二列需要為文本字段,則可以執行以下操作:

TableColumn col2 = returnTable.getColumnModel().getColumn(1);
col2.setCellEditor(new DefaultCellEditor(new JTextField()));

有關詳細說明, 請參見Oracle表單元編輯器教程。

希望這可以幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM