在Jlist项中添加ToolTipText
public static void populateJList(JList list) { ArrayList contents= DataAccess.getContents(); DefaultListModel listModel = new DefaultListModel(); for (String string : contents) { listModel.addElement(string); } preset.setModel(listModel); }
我有这个方法来填充我的JList,有没有办法可以添加JList中每个项目的toolTipText
?
-
您可以覆盖JList的getToolTipText(..)方法。
-
我相信你也可以使用调用setToolTipText(…)方法的自定义渲染器。
如果您不想覆盖JList
,可以使用MouseMotionAdapter
更改工具提示文本
jList.addMouseMotionListener(new MouseMotionAdapter() { @Override public void mouseMoved(MouseEvent e) { JList l = (JList)e.getSource(); ListModel m = l.getModel(); int index = l.locationToIndex(e.getPoint()); if( index>-1 ) { l.setToolTipText(m.getElementAt(index).toString()); } } });
对于JDK> = 1.6,需要稍微不同的构造:
loggingList.addMouseMotionListener(new MouseMotionListener() { @Override public void mouseDragged(MouseEvent e) { // no-op } @Override public void mouseMoved(MouseEvent e) { JList l = (JList) e.getSource(); ListModel m = l.getModel(); int index = l.locationToIndex(e.getPoint()); if (index > -1) { l.setToolTipText(m.getElementAt(index).toString()); } } });