java – 通过单击位置从JList获取组件

前端之家收集整理的这篇文章主要介绍了java – 通过单击位置从JList获取组件前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如何通过单击位置从JList获取组件?

我有自己的列表单元格渲染器,我插入一些面板和标签.
现在我想得到,例如用户点击的标签.

我尝试了方法list.getComponentAt(evt.getPoint());但它只返回整个JList.

@H_502_7@

解决方法

我没有测试过这个,但基础知识是……

>使用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);
@H_502_7@ @H_502_7@

猜你在找的Java相关文章