我不是什麼問題?我嘗試通過使用JButton切換兩個獨立的類擴展JPanel與cardLayout,我不知道我使用了正確的代碼... 這是我的代碼。如何實現Button ActionListener來運行其他類的cardLayout?
CardLayoutMenu
public class CardLayoutMenu extends JFrame implements ActionListener{
CardLayout cardLayout = new CardLayout();
private JPanel p1 = new JPanel(cardLayout);
final String MAIN = "MAIN";
final String OPTION = "OPTION";
MainPanel mainPanel = new MainPanel();
OptionPanel optionPanel = new OptionPanel();
private Object object;
public CardLayoutMenu(Object object) {
this.object = object;
}
public CardLayoutMenu(){
setLayout(new BorderLayout());
setTitle("Card Layout Menu");
setSize(300,300);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
setLocationRelativeTo(null);
add(p1);
p1.add(mainPanel, MAIN);
p1.add(optionPanel, OPTION);
}
public void actionPerformed(ActionEvent e){
try{
cardLayout.show(p1, OPTION);
}catch(Exception ex){
System.out.println("" + ex);
}
}
}
這裏是我的mainPanel
public class MainPanel extends JPanel{
private JButton jbtOption = new JButton("Option");
public MainPanel() {
setLayout(new FlowLayout());
add(jbtOption);
jbtOption.addActionListener(new CardLayoutMenu(this));
}
}
然後我OptionPanel,使用JButton的jbtBack回去mainPanel中
public class OptionPanel extends JPanel{
private JButton jbtBack = new JButton("Back");
public OptionPanel() {
setLayout(new FlowLayout());
add(jbtBack);
}
}
那麼...具體*是什麼問題? – mre 2012-02-23 13:34:00
我不確定你是如何嘗試使用它的,但是CardLayoutMenu在實例化時創建了一個MainPanel實例。當實例化MainPanel時,創建一個CardLayoutMenu。這隻會導致堆棧溢出...... – Sebastien 2012-02-23 13:41:01
有無限遞歸的好例子! – 2012-02-23 14:08:31