当文本相同时,如何强制工具提示在tablecellrenderer上更新?

e4yzc0pl  于 2021-07-05  发布在  Java
关注(0)|答案(3)|浏览(369)

在java程序中,我使用jtable中单元格的自定义呈现器。在这个渲染器上,我设置了一个工具提示,其内容取决于当前单元格。
当值不同时,工具提示将更新,并显示在鼠标指针旁边的单元格上。
但是,当更改单元格时此工具提示的文本相同时(恰好有几个单元格的工具提示文本相同),tooltipmanager会认为工具提示没有更改,并将上一个保留在上一个位置。
是否有人知道如何使工具提示在每个单元格上更新,即使使用相同的值?

2q5ifsrm

2q5ifsrm1#

尝试将cellstyle用于工具提示更新:

@Override
public CellStyle getCellStyleAt(int row, int column) {
        Object property = super.getPropertyAt(row);
        String description = property instanceof Property ? ((Property) property).getDescription() : null;
        if (!StringUtils.isBlank(description)) {
            if (description.length() > splitLength) { // Automatically split long descriptions, store results in cache map.
                String splitString = descriptionToSplit.get(description);
                if (null == splitString) {
                    splitString = StringUtils.splitToRows(description, splitLength);
                    descriptionToSplit.put(description, splitString);
                }
                cellStyle.setToolTipText(splitString);
            } else { // Optimization for short descriptions.
                cellStyle.setToolTipText(description);
            }
        } else { // If description is empty, use display name instead.
            String name = property instanceof Property ? ((Property) property).getDisplayName() : null;
            cellStyle.setToolTipText(name);
        }
        return cellStyle;
    }

    @Override
    public boolean isCellStyleOn() {
        return true;
    }

    private static final CellStyle cellStyle = new CellStyle();
sc4hvdpw

sc4hvdpw2#

添加或删除零宽度、不间断空格?

iqih9akk

iqih9akk3#

我认为最好的办法是重写组件中的gettooltiplocation(mouseevent),并让它跟踪鼠标的位置。如果工具提示的文本或位置已更改,则工具提示将更新。

相关问题