【发布时间】:2012-09-04 20:25:11
【问题描述】:
我通过传递一个数据数组来创建一个 JList
public class MyJList extends JList() {
...
public MyJList(final Object[] listData) {
super[listData];
}
我使用 ListCellRenderer 渲染这个列表,它为每个项目提供了一个组件,可以根据业务逻辑启用或禁用。
当我尝试通过键盘箭头导航时出现问题。我希望跳过禁用的项目。 (在适当的方向继续下一个)我必须使用键盘侦听器,因为 UI 会根据列表中选择的项目更改一些内容。麻烦的是,在键盘侦听器中,我无法获得具有所选索引的项目的 COMPONENT。此组件不归 JList 所有,调用 MyJList.getComponent(index) 失败并出现 ArrayIndexOutOfBoundsException。 1 是一个太大的索引,尽管我可以看到七个项目,其中四个是启用的。
如何通过索引从我的 JList 中以编程方式检索组件以确定它是否已启用?似乎返回组件的唯一接口是 getListCellRendererComponent() - 它会更改组件的显示。我只想让组件看看它是否已启用。
【问题讨论】:
标签: java swing jlist jcomponent listselectionlistener