나는 문제가 무엇입니까? JButton을 사용하여 cardLayout을 사용하여 JPanel을 확장하고 올바른 코드를 사용했는지 모르겠다. 여기 내 코딩이 있습니다.다른 클래스에서 cardLayout을 실행하기 위해 Button ActionListener를 구현하는 방법은 무엇입니까?
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, 무한의 원인이됩니다 MainPanel 여기
public class OptionPanel extends JPanel{
private JButton jbtBack = new JButton("Back");
public OptionPanel() {
setLayout(new FlowLayout());
add(jbtBack);
}
}
그래서 ... 구체적으로 * 문제가 무엇입니까? – mre
어떻게 사용하려고하는지 잘 모르겠지만 CardLayoutMenu를 인스턴스화하면 MainPanel 인스턴스가 만들어집니다. MainPanel은 인스턴스화 될 때 CardLayoutMenu를 생성합니다. 이것은 스택 오버플로로 끝날 수 있습니다 ... – Sebastien
무한 재귀의 좋은 예입니다! –