Java swing JTree、JTable或JList中的活动元素
我需要一个容器,上面有类似的Java swing JTree、JTable或JList中的活动元素,java,swing,jtree,jlist,Java,Swing,Jtree,Jlist,我需要一个容器,上面有类似的JPanels,一个在另一个下面排列,可以选择。我可以: 使用带有自定义渲染器的JList,但是那些JPanels将是被动元素,这不是我想要的 使用“active”JPanels实现我自己的容器,但这些容器是不可选择的。或者他们可以选择吗? 也许可以使用MouseListener和访问系统默认选择的背景色,但这似乎有点太费劲了 在自定义单元格编辑器中使用JTable或JTree呈现“活动”的JPanel。但这些活动部件只会在“第二次”单击时做出反应,首先激活编辑器,其
JPanel
s,一个在另一个下面排列,可以选择。我可以:
JList
,但是那些JPanel
s将是被动元素,这不是我想要的JPanel
s实现我自己的容器,但这些容器是不可选择的。或者他们可以选择吗?
也许可以使用MouseListener
和访问系统默认选择的背景色,但这似乎有点太费劲了JTable
或JTree
呈现“活动”的JPanel
。但这些活动部件只会在“第二次”单击时做出反应,首先激活编辑器,其次执行JPanel
的实际操作。这也是不可接受的为了获得更直观的印象,下面是一个示例,说明这可能意味着什么:
一个
JList
包含列表项,每个列表项都有两个功能性的JButtons
正如您所发现的,简单地将JPanel
放在JList
中并不能像您所希望的那样工作。JPanel
将是被动的,不会接收事件-基本上所有发生的事情都是您的JPanel
只是被绘制出来的,它不是一个活动的组件
不要使用JList
将面板放入列表,而是使用类似于列表的布局管理器,例如BoxLayout
或GridLayout
。如果希望所有面板的大小相同,请仅对一列使用GridLayout
- 也许你的问题我不太清楚
有一个
TableColumn
,但没有TableHeader
,其中包含活动的JComponents
(您可以为所有JComponents实现)as,我不确定是否理解您的“示例”。如果您想要两个功能按钮,那么使用一个JTable,其中包含的功能按钮是独立的列。然后,您的数据将显示在其他列中
展示了如何做到这一点。“。有点太费劲了”有时程序员不得不放下咖啡和甜甜圈&实际上是程序(这并不是说我不想这样做。但我更喜欢在现有的基础上构建而不是重写已有内容的解决方案。关于3)何时或是否开始编辑取决于CellRenderer的实现:根据需要实现isCellEditable(EventObject)。这是我的第二点。完全失去了项目的可选择性。