gpt4 book ai didi

java - JTable 排序和过滤

转载 作者:行者123 更新时间:2023-12-02 00:36:47 25 4
gpt4 key购买 nike

我正在创建一个程序,使用两列过滤 JTable 的内容。我使用了 RowSorter,一切正常 - 至少根据我所看到的( View )。

可以双击表中的每一行来打开一个对话框。此对话框允许您编辑表上的信息。但是,对话框上的信息仍然是原始 View 的信息(使用过滤之前)。

示例:

过滤之前,表中的第一行是 a 行。过滤后,表格中的第一行是 b 行。

但是,当我双击打开第一行的对话框时(过滤后,现在应该是 b 行,a 行的对话框打开。)[希望我已经解释得足够好]

我认为我的问题是过滤器发生后模型没有更新。我试过:

        for(int i = 0; i < table.getRowCount(); i++){
table.convertRowIndexToView(i);
}

for(int i = 0; i < table.getRowCount(); i++){
table.convertRowIndexToModel(i);
}

当我使用列标题对表格进行排序时,我也遇到了类似的问题。

如何解决这个问题?

最佳答案

I think my problem is that the model isn't being updated after the filters have taken place

模型永远不会更新。

仅更新 View 以按排序/过滤顺序显示模型中的数据。

Each row on the table can be double clicked to open a dialog.

因此,我假设您将一行数据复制到对话框中,以便可以对其进行编辑,然后添加回原始模型。

因此,您需要使用 convertRowIndexToModel(...) 来获取模型行号,以便您可以访问要在编辑对话框上显示的模型数据。您只需对要编辑的行执行此操作,而不是对整个表执行此操作。

关于java - JTable 排序和过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7599051/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com