在java程序中,我使用jtable中单元格的自定义呈现器。在这个渲染器上,我设置了一个工具提示,其内容取决于当前单元格。当值不同时,工具提示将更新,并显示在鼠标指针旁边的单元格上。但是,当更改单元格时此工具提示的文本相同时(恰好有几个单元格的工具提示文本相同),tooltipmanager会认为工具提示没有更改,并将上一个保留在上一个位置。是否有人知道如何使工具提示在每个单元格上更新,即使使用相同的值?
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();
sc4hvdpw2#
添加或删除零宽度、不间断空格?
iqih9akk3#
我认为最好的办法是重写组件中的gettooltiplocation(mouseevent),并让它跟踪鼠标的位置。如果工具提示的文本或位置已更改,则工具提示将更新。
3条答案
按热度按时间2q5ifsrm1#
尝试将cellstyle用于工具提示更新:
sc4hvdpw2#
添加或删除零宽度、不间断空格?
iqih9akk3#
我认为最好的办法是重写组件中的gettooltiplocation(mouseevent),并让它跟踪鼠标的位置。如果工具提示的文本或位置已更改,则工具提示将更新。