ich nicht getestet habe, aber die Grundlagen wären ...
- Verwenden
JList#locationToIndex(Point)
den Index des Elements bei der gegebenen Punkt zu bekommen.
- Holen Sie das "Element" auf den angegebenen Index (mit
JList#getModel#getElementAt(int)
).
- Holen Sie sich die
ListCellRenderer
mit JList#getCellRenderer
.
- das Element übertragen und es ist
Component
Darstellung
- der Renderer der Grenzen zu den gewünschten Zellgrenzen
- Konvertieren in das Kontext
Component
s
- Verwenden
getComponentAt
auf den Renderer Set erhalten die ursprüngliche Point
...
Möglicherweise etwas wie ...
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);
Für eine 'JList', eine [' ListSelectionListener'] (http://docs.oracle.com/javase/7/docs/api/javax/swing/event/ListSelectionListener.html) hinzuzufügen. Um schneller Hilfe zu bekommen, schreiben Sie eine [SSCCE] (http://sscce.org/). –
Die 'JList' enthält keine Komponenten. Es verwendet den 'ListCellRenderer', um einen" Stempel "der Komponente auf die Liste zu malen. Das heißt, jedes Element in der Liste wird gerendert unter Verwendung des gleichen/einzigen 'ListCellRenderer' – MadProgrammer