我将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
答案 0 :(得分:2)
使用Action
封装所需的功能。引用可见的封闭面板,如here和here所示;或者从具有({至少)package-private访问权限的班级中导出Action
,如here所示。