在Java程序中,我正在为JTable中的单元格使用自定义渲染器。 在此渲染器上,我设置了一个工具提示,其内容取决于当前单元格。
当值不同时,工具提示会更新,并显示在鼠标指针旁边的单元格上。
但是,当更改单元格时,此工具提示的文本相同(发生了一些单元格具有相同的工具提示文本),TooltipManager认为工具提示未更改,并且它保留了上一个工具提示,以前的职位。
有人知道如何制作它以便在每个单元格上更新工具提示,即使是相同的值吗?
答案 0 :(得分:4)
我认为您最好的选择是覆盖组件中的getToolTipLocation(MouseEvent),并让它跟踪鼠标的位置。如果工具提示的文本或位置已更改,则工具提示将更新。
答案 1 :(得分:1)
添加或删除零宽度,不间断的空格?< / hack>
答案 2 :(得分:1)
尝试使用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();