在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

  1. 您可以覆盖JList的getToolTipText(..)方法。

  2. 我相信你也可以使用调用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()); } } });