2012-02-20 136 views
2

我有一个JList的自定义单元格渲染器,它显示一个嵌套的JList与另一个显示按钮的自定义单元格渲染器。我遇到的问题是,任何用户输入(例如,按钮上的鼠标点击,滚动操作)都没有得到处理,并且嵌套的JList变得无反应(但是每当我调整窗口大小时它仍能正常绘制)。有什么办法可以解决这个问题吗?在Jlist中输入事件处理与JList的问题

+2

渲染器不是真正的组件,它们只是绘制组件的图像,所以是的,你是正确的,然后不会收到任何用户事件。 – camickr 2012-02-20 04:53:17

+0

@camickr感谢您的信息。那么是否可以将任何键盘/鼠标事件转发给嵌套的JList? – JosephH 2012-02-20 05:13:23

回答

3

像camickr说的,Renderers只是描绘图像而不是真正的组件。

一个办法来解决这个问题是使用单立柱的JTable,而不是一个JList,在这里你可以设置CellEditors,这真正的组件(但只有一次,该小区获得焦点)。

但是,实际上可能更容易创建一个滚动窗格的面板,该面板监听来自ListModel的ListData事件并根据需要添加和删除组件。这就是我最后一次遇到这个问题时的结局,它更加优雅。

虽然如果你只有一个按钮,JTable可能会工作得很好。