Я не проверял это, но основа будет ...
- Используйте
JList#locationToIndex(Point)
, чтобы получить индекс элемента в данной точки.
- Получите «элемент» по указанному индексу (используя
JList#getModel#getElementAt(int)
).
- Получите
ListCellRenderer
используя JList#getCellRenderer
.
- рендер элемента и получить его
Component
представления
- Установить границы Отображателя на требуемых пределы ячейки
- Преобразования оригинала
Point
к Component
сек контексту
- Использования
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);
Для 'JList', добавьте [' ListSelectionListener'] (http://docs.oracle.com/javase/7/docs/api/javax/swing/event/ListSelectionListener.html). Чтобы лучше помочь, опубликуйте [SSCCE] (http://sscce.org/). –
'JList' не содержит никаких компонентов. Он использует «ListCellRenderer» для рисования «резиновой маркировки» компонента в списке. То есть каждый элемент в списке визуализируется с использованием того же/единственного 'ListCellRenderer' – MadProgrammer