摆动JTree,JTable或JList中的活动元素

时间:2011-08-31 21:38:08

标签: java swing jtree jlist

我需要一个容器,其中JPanel个相似的JList排列在一起,可以选择。我可以:

  1. JPanel与自定义渲染器一起使用,但那些JPanel将是被动元素,这不是我想要的。
  2. 使用'有效'MouseListener实现我自己的容器,但这些容器不可选。或者他们可以选择吗? 也许是JTable并且可以访问系统默认的selected-background-colors,但似乎有点太费力了
  3. 使用JTreeJPanel自定义单元格编辑器呈现“有效”JPanel。但是这些活动部分只会在“第二次”点击时做出反应,首先激活编辑器,然后再执行JList的实际操作。这也是不可接受的。

  4. 为了获得更直观的印象,以下是这可能意味着什么的示例:

    包含列表项的JButtons,每个列表项具有两个功能{{1}}。

3 个答案:

答案 0 :(得分:2)

正如您所发现的那样,只需将JPanel放在JList内并不是您想要的。 JPanel将是被动的,不会接收事件 - 基本上所有发生的事情都是JPanel被简单地绘制,它不是一个活生生的组件。

使用类似列表的布局管理器,例如JListBoxLayout,而不是使用GridLayout将面板放入列表中。如果您希望所有面板的大小相同,请使用GridLayout只有一列。

答案 1 :(得分:2)

我不确定我理解你的“例子”。如果你想要两个功能按钮,那么使用一个JTable,其中包含的功能按钮是单独的列。然后您的数据将显示在其他列中。

Table Button Column显示了如何执行此操作。

答案 2 :(得分:1)

你的问题对我来说并不清楚,也许here

JTable,其中一个TableColumn但没有TableHeader,其中包含JPanel,其中包含有效JComponents(您可以实现TableCellEditor所有JComponents)为JComboBoxJButtonJTextField