我将我的buttons
在JPanel
(其中有一个border layout
,增加了按键的south
位置),然后添加another JPanel
cardsPanel
在( center
父面板中的位置),并赋予它一个CardLayout
。 我想这cardsPanel
是container
的卡 (我的意思是,这将共享相同的屏幕空间面板)。
现在我需要做的是显示这些卡(我打电话,这将共享相同的屏幕空间的卡板)作为父面板的按钮的响应。 但按键位于父面板及其作用的听众显然将设在那里了。
所以,问题是,我怎么show
(由cardLayout.show()
位于容器类(与面板Cardlayout
),在位于另一个类(带有按钮的响应BorderLayout
)?
编辑-关于产品ACTION: -
我希望能找到一个执行Action
比更为有用ActionListener
。 我还读它们可以被重复使用,并且用于执行相同功能的按钮。 我有执行翻转特定卡(即显示在CardLayout特定面板)的功能的几个按钮。 我已经写了只有一个内部类,我想用它为所有的按钮。
因此,我将喜欢通过按钮标识符(用于标识一个按钮,当我们将按钮添加到它的父例如字符串String btnIdentifier= "1"; panel.add(button1, btnIdentifier);
),以该方法的actionPerformed()的这个类,定义虽然我们从来没有显式调用的actionPerformed()。 那么,如何可以通过按钮的字符串标识符的actionPerformed()方法,这样我可以使用相同的Action
为我所有的按钮。
最少的代码: -
class Action extends AbstractAction{
Action(String text, ImageIcon icon){
super(text, icon);
}
public void actionPerformed(ActionEvent e) {
button1.setBorderPainted(true);
button1.setContentAreaFilled(true);
if (btnIdentifier=="1"){ //////ASSUMING THAT BUTTON IDENTIFIER HAS SOMEHOW BEEN PASSED TO THIS METHOD
FirstCard firstCard= new FirstCard();
cardsPanel.add(firstCard, btnIdentifier);
cardLayout.show(cardsPanel, btnIdentifier);
} else if (btnIdentifier=="2"){ //////ASSUMING THAT BUTTON IDENTIFIER HAS SOMEHOW BEEN PASSED TO THIS METHOD
SecondCard secondCard= new SecondCard();
cardsPanel.add(secondCard, btnIdentifier);
cardLayout.show(cardsPanel, btnIdentifier);
} else if (btnIdentifier=="3"){ //////ASSUMING THAT BUTTON IDENTIFIER HAS SOMEHOW BEEN PASSED TO THIS METHOD
ThirdCard thirdCard= new ThirdCard();
cardsPanel.add(thirdCard, btnIdentifier);
cardLayout.show(cardsPanel, btnIdentifier);
}
}
}
}