【问题标题】:JTable with AbstractTableModel does not edit on click带有 AbstractTableModel 的 JTable 在单击时不会编辑
【发布时间】:2012-06-01 20:15:54
【问题描述】:

我正在为应该能够处理用户编辑的Applet 构建一个JTable。因此,我扩展了AbstractTableModel 并成功地用数据填充了表。我的问题是,一旦填充了数据,点击表格就不允许进行编辑。

我已将isCellEditable() 方法覆盖为始终return true,并在每次调用该方法时向控制台打印一条消息。但是,当我与表格交互时(通过任意数量的连续鼠标单击任何给定的单个单元格),该单元格不会变得可编辑,并且 isCellEditable() 也永远不会被调用。

我的问题是,为了编辑特定的单元格需要调用什么?对于帖子中缺少代码,我深表歉意,但代码是高度专有的,我的上级对发布任何代码都非常严格。

【问题讨论】:

  • 嗯。如果没有看到任何代码,很难判断你可能出错的地方。

标签: java swing jtable abstracttablemodel


【解决方案1】:

为了保护您上级的利益,请编辑您的问题以包含一个 sscce,以展示您所描述的问题。在How to Use Tables 中可以找到几个适合作为起点的示例,而这个example 说明了一个可编辑的AbstractTableModel。您可以将其与您的实现进行比较。

【讨论】:

    【解决方案2】:

    1.您是否将AbstractTableModel 添加到屏幕上已经可见的JTable

    2.如果是,那么代码行不是isCellEditable(),而是应该是

    @Override
    public boolean isCellEditable(int row, int column) {
        return true;
    }
    

    3.我建议使用DefaultTableModel 而不是覆盖AbstractTableModel 所需的方法

    【讨论】:

    • 我真的不明白你为什么推荐 DefaultTableModel 而不是 AbstractTableModel。它需要在域对象和(喘气)向量之间复制并复制信息,并在可编辑时在另一个方向上做同样的事情。为什么不直接使用域对象。不那么凌乱,恕我直言。
    • @JB Nizet DefaultTableModel 什么都不需要,任何关于something、关于JavaJTable、它的ModelDefaultTableModel 的知识都可以用相同的方式覆盖对于所有可访问的方法,同意使用 Vectordouble Array 的限制,我的观点是,但为什么要打扰那些方法,为什么要把简单的事情复杂化,特别是如果它们是来自 API 的默认设置,
    • 选项 #2 对我有用,非常感谢。您介意解释一下为什么表格添加到屏幕后会有所不同吗?
    猜你喜欢
    • 1970-01-01
    • 2011-11-15
    • 2019-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-20
    • 1970-01-01
    相关资源
    最近更新 更多