繁体   English   中英

使 JTable 中的列不可编辑

[英]Make a column non-editable in a JTable

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

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

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

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

这对我不起作用!

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

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

JTable table = new JTable( model );

禁用用户对 JTable 的多列编辑

JTable table = new JTable(10, 4) {
    @Override
    public boolean isCellEditable(int row, int column) {
        return column == 3 || column==4 || column==5 ? true : false;
    }
};

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

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

在此处输入图片说明

如果您直接扩展 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);

isCellEditable()

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

如果 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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM