当前位置: 首页 > 知识库问答 >
问题:

为什么JTable在changeSelection之后不更新呈现器

尉迟雅昶
2023-03-14

我在Java的JTable中使用changeSelection(int row,int column,boolean toggle,boolean extended)。我这样做了,当表中有一个复选框列并且该列被单击时,就会发送一个事件来显示现在该行已被选中/取消选中--当用户执行该操作时,这一切都很好。但当它以编程方式完成时,事件被激发,但JTable没有刷新呈现器,难道我应该添加其他东西。它应该显示现在复选框是勾选的,但不是。

这是我用来以编程方式激发事件的代码。

boolean success = editCellAt(row, col); // col is a known checkbox column number
if (success) {
   changeSelection(row, col, true, false);
}

这之后怎么办?事件触发,但呈现器不会显示一个复选框已被选中,如果该复选框未被选中,反之亦然

共有1个答案

诸嘉澍
2023-03-14

数据存储在TableModel中,这是Swing中JTable的OPMVC模式,也是您需要处理的,因此如果您想更新表,您需要从AbstractTableModelFireTableCellUpdatedFireTableCellUpdated

所以您可能想要做这样的事情:

public class MyTableModel extends AbstractTableModel {

    //implements the needed methods.

    @Override
    public void setValueAt(Object value, int rowIndex, int columnIndex) {
        //code
        fireTableCellUpdated(rowIndex, columnIndex);
    }
}

阅读有关abstracttableModel的详细信息

 类似资料:
  • 我的目标是有两个不同的FullCalendar元素保持同步。我不做任何网络调用,在这一点上只是客户端数组。 当我添加一个事件时(比如通过点击或者在它构建之后),日历实际上不会像文档所说的那样重新呈现。 我还尝试使用“renderEvents”和“renderEvent”风格,但这似乎没有必要,因为“updateEvents”将/应该更新这些事件的呈现。我还遇到了一个问题,日历列表版本上的“rend

  • 我找到了更新数据的示例,但它使用了DefaultTableModel。当我创建自己的TableModel和自己的data类时,当我将数据添加到JTable中时,它不会更新。 有我的桌子模型: 当我添加了任何信息,但它没有更新。在JTable中,我必须把这个方法放在哪里来进行正确的数据更新?

  • 我是java新手,所以请不要后悔java中的对象和东西正在传递引用的值,但下面是我试图传递对象的代码。当我通过传递到函数中更新值时,a的值没有改变。发生了什么请帮助我。。。

  • 问题内容: 我这里有一些简单的代码 每次单击按钮,控制台上都会显示2条日志,指示该组件呈现两次。 这是一个codeandbox链接,可以尝试一下。 问题答案: 呈现您的App组件的原因是在其中导致代码在严格模式下运行,并且在严格模式下,控制台显示两次,因为每个功能在开发模式下均运行两次 根据react docs: 严格模式无法自动为您检测副作用,但可以通过使其更具确定性来帮助您发现它们。这是通过有

  • 我是一个初学者React开发人员,我对这个特定的代码片段有一个问题。 问题: 虽然我直接复制了虚拟数据的值并将其作为单独的子项呈现,但并不是所有的虚拟数据都被呈现 我特意选择使用useRef而不是useState,因为在用户添加或编辑他们想要的任何链接之后,我想将keyRef发送到NoSQL数据库;然而,当我使用useState()时,它给了我陈旧的状态问题,其中包含所有链接的数组没有不断更新。

  • 与其他包管理器(如)相比,我发现当更新与给定项目相关的包时,有一种奇怪的行为。 还根据留档,和选项 根据composer.json将依赖项升级到最新版本,并更新composer.lock文件。 事实上,正确地更新了新的包版本号。但是没有被修改,并且列出了旧的版本过低的包。 为什么会发生这种情况?是我做错了什么,还是这就是应该怎么做的?如果是这样的话,为什么两个文件中的一个是最新的,而另一个不是最新