7

我创建了一个MasterDetail Simple Formusing Netbeans,并且我有一个JTable与数据库相关的。

我想编辑其中的一列JTable以使其不可编辑。

我用谷歌搜索了一下,我能找到的都是:

this.masterTable.getColumn("Validation").setEditable(false);

这对我不起作用!

4

6 回答 6

12

覆盖isCellEditable(...)TableModel 的方法。

DefaultTableModel model = new DefaultTableModel(...)
{
    @Override 
    public boolean isCellEditable(int row, int column)
    {
        // add your code here
    }
}

JTable table = new JTable( model );
于 2013-05-28T20:58:43.300 回答
6

对多列禁用 JTable 上的用户编辑

JTable table = new JTable(10, 4) {
    @Override
    public boolean isCellEditable(int row, int column) {
        return column == 3 || column==4 || column==5 ? true : false;
    }
};
于 2013-05-29T08:13:44.853 回答
4

我使用 GUI 找到了解决方案:

  • 右键单击表格单元格。
  • 从弹出菜单中,选择“表格内容..”。
  • 取消选中要使其不可编辑的列的可编辑复选框。

在此处输入图像描述

于 2013-05-28T21:36:13.987 回答
2

如果您直接扩展 JTable,这是解决方案:(将此代码放在构造函数中)

DefaultTableModel tableModel = new DefaultTableModel(data, colNames){

        @Override
        public boolean isCellEditable(int row, int column)
        {
            // make read only fields except column 0,13,14
            return column == 0 || column == 13 || column == 14;
        }
    };

this.setModel(tableModel);

于 2016-02-16T05:36:57.957 回答
1
isCellEditable()

这是 Javadoc:isCellEditable(int, int) 是您想要的方法。如果您使用的是 TableModel,则可以在该 JTable 实例的 TableModel 的子类中覆盖此方法。

于 2013-05-28T21:02:43.267 回答
0

如果 jtable 名称是 wordListJTable:

        String colTitles[] = {"#", "Word", "Definiton"};
        boolean[] isEditable = {false,true,true};
        wordTableModel = new DefaultTableModel(colTitles, 0) {
            @Override
            public boolean isCellEditable(int row, int column) {
                // make read only fields except column 0,13,14
                return isEditable[column];
            }
        };
        // The 0 argument is number rows. 
        wordListJTable.setModel(wordTableModel);
于 2020-05-01T19:18:44.377 回答