Nie testowałem tego, ale podstawy byłoby ...
- Zastosowanie
JList#locationToIndex(Point)
aby uzyskać indeks elementu w danym punkcie.
- Pobierz "element" o określonym indeksie (używając
JList#getModel#getElementAt(int)
).
- Uzyskaj
ListCellRenderer
przy użyciu JList#getCellRenderer
.
- Render element i uzyskać to
Component
reprezentacja
- Ustaw granic renderujący do wymaganych granicach komórkowych
- Konwersja oryginalny
Point
do Component
s kontekście
- Korzystanie
getComponentAt
na renderujący ...
Prawdopodobnie coś jak ...
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);
po 'JList' dodaj [' ListSelectionListener'] (http://docs.oracle.com/javase/7/docs/api/javax/swing/event/ListSelectionListener.html). Aby uzyskać lepszą pomoc wcześniej, opublikuj [SSCCE] (http://sscce.org/). –
'JList' nie zawiera żadnych składników. Używa 'ListCellRenderer' do namalowania" pieczątki "komponentu na liście. Oznacza to, że każdy element na liście jest renderowany za pomocą tego samego/pojedynczego 'ListCellRenderer' – MadProgrammer