在 JFileChooser 上显示文件名 ToolTipText
Display filename ToolTipText on JFileChooser
我有一个JFileChooser
。
我希望当鼠标指向 JList
中的每个文件时显示 ToolTipText
(这将是文件名)。
看来我需要覆盖 JList::getToolTipText()
,但我无法获取文件选择器列表(然后覆盖 getToolTipText()
方法)。
我的意思是,我是否必须创建一个扩展 JLis
t 的新 class,然后覆盖 class 中的方法,然后替换文件选择器的 JList
通过我创建的新 class 实例?
我需要访问 JList ListModel
属性吗?
我做了一些研究。这些链接可能有用:
这解决了我的问题。感谢 camickr 的帮助。
1-使用SwingUtils getDescendantOfType
获取列表
2- 添加鼠标监听器以显示 ToolTipText
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());
}
}
});
我有一个JFileChooser
。
我希望当鼠标指向 JList
中的每个文件时显示 ToolTipText
(这将是文件名)。
看来我需要覆盖 JList::getToolTipText()
,但我无法获取文件选择器列表(然后覆盖 getToolTipText()
方法)。
我的意思是,我是否必须创建一个扩展 JLis
t 的新 class,然后覆盖 class 中的方法,然后替换文件选择器的 JList
通过我创建的新 class 实例?
我需要访问 JList ListModel
属性吗?
我做了一些研究。这些链接可能有用:
这解决了我的问题。感谢 camickr 的帮助。
1-使用SwingUtils getDescendantOfType
获取列表
2- 添加鼠标监听器以显示 ToolTipText
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());
}
}
});