我有一个组合框,其中的项是对象,其字符串值可能很长。我不想让框变长,而是希望全文显示时鼠标悬停。我如何才能做到这一点?
基本解决方案是提供ListCellRenderer
将返回的Component
toolTipText
属性设置为所需的相应值
DefaultListCellRenderer
扩展自JLabel
,因此您只需使用它的toolTipText
方法即可提供您想要的任何"扩展"文本。
public class ToolTipListCellRenderer extends DefaultListCellRenderer {
@Override
public Component getListCellRendererComponent(JList<?> list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
// I'd extract the basic "text" representation of the value
// and pass that to the super call, which will apply it to the
// JLabel via the setText method, otherwise it will use the
// objects toString method to generate a representation
super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
setToolTipText("To what ever you need based on the value that has been passsed");
return this;
}
}
有关详细信息,请参阅How to use comboboxes和Providing a custom renderer