我有一個JFrame在一邊分成兩部分我有一個JPanel上有一些JToggleButtons。在另一方面,當單擊一個JToggleButton時,我需要顯示正確的JPanel。現在我只用一個線程來做到這一點。我需要一個JPanel來顯示,當我點擊一個JToggleButton
這裏是JFrame的
public class AppFrame extends JFrame{
private JPanel content ;
private JPanel menu;
public AppFrame() {
super("Title");
setLayout(BorderLayout());
//content is gonna hold JPanel1 or JPanel2
content = new JPanel();
menu = new menu();
this.add(menu, BorderLayout.WEST);
this.add(content , BorderLayout.CENTER);
}
public void setContet(JPanel activePanel){
content = activePanel;
this.add(content , BorderLayout.CENTER);
}
}
這裏JPanel中持有JToggleButtons(MenuJPanel)
public class MenuJPanel extends JPanel{
private final LayoutManager innerLayout = new GridLayout(3,1,1,1);
private final JToggleButton button1;
private final JToggleButton button1;
public MenuPanel() {
super();
SwitchHandler sHandler = new SwitchHandler();
this.setLayout(innerLayout);
this.add(button1);
this.add(button2);
button1.addActionListener(sHandler);
button2.addActionListener(sHandler);
}
class SwitchHandler implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == button1){
button2.setSelected(false);
//at this point I want the frame to display JPanel1
//I tried this
AppFrame frame = (AppFrame)getTopLevelAncestor();
frame.setContet(new JPanel1());
} else {
button1.setSelected(false);
//at this point I want the frame to display JPanel2
//I tried this
AppFrame frame = (AppFrame)getTopLevelAncestor();
frame.setContet(new JPanel2());
}
}
}
誰能告訴我怎樣才能打開幀這些面板在觸發事件。 謝謝
[如何使用CardLayout(http://docs.oracle.com/javase/tutorial/uiswing /layout/card.html) – MadProgrammer
我真的很難找到如何做到這一點的參考。謝謝 – LH88