任何时候,我做一个自定义单元格渲染一个JList,我给它添加任何元素永远不应对行动。例如,如果我有细胞渲染器返回与在其上的元件,其中一个具有一个ActionListener一个JPanel,它不会在所有的反应。

这是为什么?

有帮助吗?

解决方案

返回的列单元格渲染该项目是为正是为渲染。注册听众将JList(通常,你会想要一个ListSelectionListener)。

其他提示

渲染器可能看起来像一个工厂返回部件的细胞,但实际上它遵循的轻量级呈现方法和使用相同组件用于呈现所有单元(每次调用getListCellRendererComponent()应该重新配置相同的组件实例为特定小区并返回它使细胞可以呈现)。

这样一来,就可以有JList(以及JTableJTree),而不必实例化的组件的每个单元格中显示细胞大量量。作为副作用,渲染组件不能响应事件,因为它呈现循环期间只使用,但没有出现在该组件树。

正如尼尔·科菲说,你可以添加你的听众到JListJTableJTree)来代替,然后使用辅助方法(locationToIndex(...)getCellBounds(...))分配给哪个小区受到影响,因此处理单元的特定逻辑。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top