我没有测试过这个,但基础知识是……
>使用JList#locationToIndex(Point)获取元素的索引
给定的点.
>在指定的索引处获取“元素”(使用
JList的#getModel#getElementAt(INT)).
>使用JList#getCellRenderer获取ListCellRenderer.
>渲染元素并获取它的Component表示
>将渲染器的边界设置为所需的单元格边界
>将原始Point转换为Components上下文
>在渲染器上使用getComponentAt …
可能,像……
int index = list.locationToIndex(p);
Object value = list.getModel().getElementAt(int);
Component comp = listCellRenderer.getListCellRendererComponent(list, value, index, true, true);
comp.setBounds(list.getCellBounds(index, index));
Point contextPoint = SwingUtilities.convertPoint(list, p, comp);
Component child = comp.getComponentAt(contextPoint);