我需要一个容器,其中JPanel
个相似的JList
排列在一起,可以选择。我可以:
JPanel
与自定义渲染器一起使用,但那些JPanel
将是被动元素,这不是我想要的。MouseListener
实现我自己的容器,但这些容器不可选。或者他们可以选择吗?
也许是JTable
并且可以访问系统默认的selected-background-colors,但似乎有点太费力了 JTree
或JPanel
自定义单元格编辑器呈现“有效”JPanel
。但是这些活动部分只会在“第二次”点击时做出反应,首先激活编辑器,然后再执行JList
的实际操作。这也是不可接受的。为了获得更直观的印象,以下是这可能意味着什么的示例:
包含列表项的JButtons
,每个列表项具有两个功能{{1}}。
答案 0 :(得分:2)
正如您所发现的那样,只需将JPanel
放在JList
内并不是您想要的。 JPanel
将是被动的,不会接收事件 - 基本上所有发生的事情都是JPanel
被简单地绘制,它不是一个活生生的组件。
使用类似列表的布局管理器,例如JList
或BoxLayout
,而不是使用GridLayout
将面板放入列表中。如果您希望所有面板的大小相同,请使用GridLayout
只有一列。
答案 1 :(得分:2)
我不确定我理解你的“例子”。如果你想要两个功能按钮,那么使用一个JTable,其中包含的功能按钮是单独的列。然后您的数据将显示在其他列中。
Table Button Column显示了如何执行此操作。
答案 2 :(得分:1)
你的问题对我来说并不清楚,也许here
有JTable,其中一个TableColumn
但没有TableHeader
,其中包含JPanel,其中包含有效JComponents
(您可以实现TableCellEditor所有JComponents)为JComboBox,JButton和JTextField