如何在JTable中只编辑一列

时间:2014-03-02 09:05:32

标签: java swing jtable jbutton

我想让我的JTable无法使用,但我想将JButton添加到其中,并且按钮的列必须可以为新闻事件编辑,那么我该如何才能使此列可编辑?

这是我的表型号代码:

DefaultTableModel model = new DefaultTableModel();
model.setColumnIdentifiers(new String[]{ 
                                        "IDemp",
                                        "empNumber",
                                        "Fname","Lname",
                                        "BirthDate",
                                        "Address",
                                        "email",
                                        "Button" }
                                       );
//TableCellRenderer buttonRenderer = new JTableButtonRenderer();

for(int i=0;i<emps1.size();i++) {
    model.addRow(new Object[]{String.format("%d",emps1.get(i).getIDemp()),
                                String.format("%d",emps1.get(i).getEmpNumber()),emps1.get(i).getFname(),
                                    emps1.get(i).getLname(),emps1.get(i).getBirthDate(),
                                        emps1.get(i).getAddress(), emps1.get(i).getEmail().getEmailAddress()});
}

这是我的jtable:

JTable emps=new JTable(model);
emps.getColumn("Button").setCellRenderer(new ButtonRenderer());
emps.getColumn("Button").setCellEditor(new ButtonEditor(new JCheckBox()));

如何使“按钮”列可编辑而其他列不可编辑? *如果您有更好的方式将JButton添加到JTable,那就太棒了。“

1 个答案:

答案 0 :(得分:4)

您需要扩展AbstractTableModel并覆盖isCellEditable,如下所示:

public class MyTableModel extends AbstractTableModel {

     public boolean isCellEditable(int row, int col) {
        if (col== columnIndex) { //columnIndex: the column you want to make it editable
            return true;
        } else {
            return false;
        }
    }
}