加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 带自定义渲染器的JList

发布时间:2020-12-15 04:53:44 所属栏目:Java 来源:网络整理
导读:我有一个显示多个JPanel的JList,我创建了一个返回新JPanel的自定义渲染器. JPanels显示在JList中,但是它们无法访问,我无法选择它们,如果我有一个按钮或文本区域,我就无法按下它. 我想尝试,如果这在JList中工作,因为我想做进一步的分页.我设法通过向Jscroll窗
我有一个显示多个JPanel的JList,我创建了一个返回新JPanel的自定义渲染器.
JPanels显示在JList中,但是它们无法访问,我无法选择它们,如果我有一个按钮或文本区域,我就无法按下它.
我想尝试,如果这在JList中工作,因为我想做进一步的分页.我设法通过向Jscroll窗格添加面板来使其工作,但是希望使JList工作正常.

谢谢

解决方法

这是JList(以及JTabel,JComboBox等)的正常行为.

您的自定义渲染器返回的JPanel未添加到Swing层次结构中. JList仅使用其paint方法在正确的位置绘制渲染器.渲染器只是一个标记,你在JList中看到的不是组件,而是组件的图像.

这是在屏幕上显示许多组件的有效方式,而没有真实实例化组件的开销.请注意,您的渲染器可以始终返回相同的实例(甚至更可取).

有关详细信息,请参阅Swing tutorial.

如果希望JList的条目像真实组件一样,则可以执行以下操作.首先,使用JTable而不是JList.具有一列且没有标头的JTable与JList大致相同.为什么要使用JTable?因为JTable提供编辑器.编辑器在JTable上注册,就像Renderers一样.当用户点击JTable的单元格时,通常会出现编辑器.编辑器叠加在渲染器上,这次它是一个真正的组件.如果渲染器和编辑器组件相同,则用户感觉JTable的单元是真实组件.

Swing tutorial有这种技术的例子.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读