在JTable中使列不可编辑

时间:2013-05-28 20:57:47

标签: java swing netbeans jtable tablecolumn

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

我想修改此JTable中的列,使其不可编辑。

我用Google搜索了这一切,我发现了这一切:

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

这对我无效!

6 个答案:

答案 0 :(得分:10)

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

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

JTable table = new JTable( model );

答案 1 :(得分:3)

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

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

enter image description here

答案 2 :(得分:3)

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

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

答案 3 :(得分: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的);

答案 4 :(得分:1)

isCellEditable()

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

答案 5 :(得分: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);