Мне нравится простота решения MountainX, но не отсутствие инкапсуляции. Альтернативное решение, которое имеет больше движущихся частей, но они довольно просты и могут быть использованы повторно.
Интерфейс:
public interface ToolTipProvider {
public String getToolTip();
}
Класс обёртки:
public class ToolTipWrapper implements ToolTipProvider {
final Object value;
final String toolTip;
public ToolTipWrapper(Object value, String toolTip) {
this.value = value;
this.toolTip = toolTip;
}
@Override
public String getToolTip() {
return toolTip;
}
@Override
public String toString() {
return value.toString();
}
}
И вариант рендера MountainX:
public class ToolTipRenderer extends DefaultListCellRenderer {
@Override
public Component getListCellRendererComponent(JList list, Object value,
int index, boolean isSelected, boolean cellHasFocus) {
JComponent component = (JComponent) super.getListCellRendererComponent(list, value, index, isSelected,
cellHasFocus);
String tip = null;
if (value instanceof ToolTipProvider) {
ToolTipProvider ttp = (ToolTipProvider) value;
tip = ttp.getToolTip();
}
list.setToolTipText(tip);
return component;
}
}
с добавлением сейчас:
combobox.addItem(new ToolTipWrapper(itemString,tooltipString) );