在CardLayout等中重用动态JList和actionlisteners

时间:2012-04-24 17:39:45

标签: java swing jlist cardlayout

我正在动态创建一个JList,我想在不同的JPanel上使用它,我可以在其中调用setQuery(query);在上面。还有一个搜索按钮+字段连接到它。有没有办法将JList,搜索按钮和搜索字段放在10个不同的面板上而不必在任何地方复制代码?我不能把它放在一个单独的JPanel上,因为它有其它按钮/ gui元素需要在它周围,这取决于JPanel的显示内容。我到处都看,但没有提到重用动态JList。

2 个答案:

答案 0 :(得分:3)

您只能将组件放在一个可视化容器中。考虑创建一个为您创建这些组件的方法,它返回一个包含组件的JPanel,并且可能让所有创建的JLists共享相同的ListModel,并且所有JButton都使用相同的AbstractAction。

或者另一种选择,如果你使用CardLayout来交换JPanels,并且你希望所有的面板都保持上面的这些组件,那么考虑不要这样做,而是将JList,JButton和JTextField移出卡片,然后移到GUI的动态部分。

另外,我不清楚这一点:

  

我无法将它放在单独的JPanel上,因为它有其他按钮/ gui元素需要在它周围,这取决于JPanel的显示内容。

请澄清并告诉我们更多信息。图像也可能有所帮助。

答案 1 :(得分:2)

同时考虑decorator pattern您的列表/搜索面板将是主要组件,而变化将来自装饰原件。