簡體   English   中英

如何在可編輯的JTable中設置JCheckbox?

[英]How to set JCheckbox in JTable edditable?

我有JTable用於顯示用戶輸入的值。 我使用“雇員”類從用戶那里獲取值並將其顯示在表中。 我已經使用了getColumnClass()setValueAt()isCellEdditable方法 我程序的結果顯示了該復選框,但不允許我在該復選框上打勾: 在此處輸入圖片說明

public class ETableModel extends AbstractTableModel {

    private boolean checked;

    private List<Employee> eDb;

    private String[] colNames = {"Select", "Name", "National Insurance Number", "National Insurance Catagory",
            "Contact number", "Email", "Address", "Town/City", "Postcode"};

    public String getColumnName(int column) {
        return colNames[column];
    }

    public ETableModel(){
    }

    public boolean isCellEdditable(int row, int col){
        switch(col){
        case 0:
            return true;
        default:
            return false;
        }
    }

    public void setData(List<Employee> eDB){
        this.eDb = eDB;
    }

    @Override
    public int getColumnCount() {
        return colNames.length;
    }

    @Override
    public int getRowCount() {
        return eDb.size();
    }

    @Override
    public Object getValueAt(int row, int col) {
        Employee employee = eDb.get(row);

        switch(col){
        case 0:
            return checked;
        case 1:
            return employee.getName();
        case 2:
            return employee.getnINumber();
        case 3:
            return employee.getnICatagory();
        case 4:
            return employee.getMobileNum();
        case 5:
            return employee.getEmail();
        case 6:
            return employee.getAddress();
        case 7:
            return employee.getArea();
        case 8:
            return employee.getPostCode();
        }
        return null;
    }

    @Override
    public void setValueAt(Object value, int row, int col){
        switch(col){
        case 0:
            checked = ((Boolean)value);
            fireTableCellUpdated(row, col);
        default:
            return;
        }
    }

    @Override
    public Class<?> getColumnClass(int col) {
        switch(col){
        case 0:
            return Boolean.class;
        case 1:
            return String.class;
        case 2:
            return String.class;
        case 3:
            return NICatagory.class;
        case 4:
            return Integer.class;
        case 5:
            return String.class;
        case 6:
            return String.class;
        case 7:
            return String.class;
        case 8:
            return String.class;
        default:
            return null;
        }
    }

}

有人有指針嗎? 我猜這個問題在我的setValueAt()方法中,但是我不確定如何解決這個問題。 大多數示例正在使用:

Data [int row] [int col] =((Boolean)value);

但是,當從用戶輸入中獲取我的值時,我不確定如何使用此功能。

我猜問題在我的setValueAt()方法中

是的,在這個方法需要更新成員eDBETableModel

另外,您將isCellEditable拼寫錯誤。 這是錯字嗎? 如果不是,那么您需要更正您的代碼。

祝好運!

暫無
暫無

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

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