CardLayout:如何在另一个类的ActionListeners中的一个类中显示面板?

时间:2014-05-03 22:12:49

标签: java swing layout-manager cardlayout

我将buttons添加到JPanel(其中border layout,将按钮添加到其south位置),然后添加了another JPanel {{ 1}}在父级面板的{cardsPanel位置,并给它一个center我希望此CardLayout成为卡片的cardsPanel (我的意思是将共享相同屏幕空间的面板)。

现在我需要做的是显示那些卡片(我正在调用与卡片共享相同屏幕空间的面板)作为对父面板中按钮的响应。但是按钮位于父面板中,它们的动作侦听器显然也位于那里。

所以问题是我如何container(通过show)位于容器类中的面板(带有cardLayout.show())作为对位于另一个容器类中的按钮的响应课程(Cardlayout)?


编辑 - 关于行动的问题: -

我希望找到比BorderLayout更有用的Action我还读到它们可以重复使用,并用于执行相同功能的按钮。我有几个按钮执行翻转特定卡的功能(即在CardLayout中显示特定面板) )。 我只编写了一个内部类,我想将它用于所有按钮。

所以我想传递按钮标识符(当我们将按钮添加到其父节点时用于标识按钮的字符串,例如ActionListener)到此类的方法actionPerformed(),尽管我们从未明确调用actionPerformed()。 那么如何将按钮的字符串标识符传递给actionPerformed()方法,以便我可以对所有按钮使用相同的String btnIdentifier= "1"; panel.add(button1, btnIdentifier);

最小代码: -

Action

1 个答案:

答案 0 :(得分:2)

使用Action封装所需的功能。引用可见的封闭面板,如herehere所示;或者从具有({至少)package-private访问权限的班级中导出Action,如here所示。