gpt4 book ai didi

java - 表中已筛选行的工具提示

转载 作者:行者123 更新时间:2023-12-01 08:16:15 25 4
gpt4 key购买 nike

我有一个 JTable,当鼠标悬停在一行上时,其中的任何单行都会关联一个不同的工具提示。我为此表创建了一个“过滤器”;应用它时,它完美地隐藏了需要隐藏的行,但是当我将鼠标悬停在过滤后的行上时,看起来工具提示指的是占据新当前行的同一行位置的行。

例如:

第 1 行 -> 工具提示 1

第 2 行 -> 工具提示 2

将过滤器应用于表:

第 2 行 -> 工具提示 1

因此 ROW 2 显示工具提示 1 而不是 2。

TableRowSorter<TableModel> sorter = (TableRowSorter<TableModel>) table.getRowSorter();
sorter.setRowFilter(RowFilter.regexFilter(text));

我的扩展 JTable 的表有:

@Override
public String getToolTipText(MouseEvent e) {
final int rowIndex = rowAtPoint(e.getPoint());
TableModel model = getModel();
// take the value from the first column of the selected row
String tip = (String) getModel().getValueAt(rowIndex, 0));
return tip;
}

所以看起来使用模型并没有(非常明显)更新过滤器。我也尝试使用 TableModel model = getRowSorter().getModel() 但没有任何运气。

如何指向正确的“过滤模型”来检索正确的行位置?

更新:

我已经替换了“rowIndex”代码,如下所示:

final int rowIndex = convertRowIndexToModel(rowAtPoint(e.getPoint()));

它部分解决了问题,但是当应用过滤器将一些行动态添加到表中并且我将鼠标悬停在新行上时,我得到了异常(带有相关的 API 描述):

IndexOutOfBoundsException -> 如果启用排序并传递一个超出 JTable 范围(由 getRowCount 方法确定)的索引

最佳答案

您需要将 View 行索引转换为模型的行索引

看看JTable#convertRowIndexToModel

关于java - 表中已筛选行的工具提示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13222159/

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