gpt4 book ai didi

java - 单击 Jbutton 后更改 JPanel

转载 作者:行者123 更新时间:2023-11-29 07:35:04 25 4
gpt4 key购买 nike

我的代码中有 2 个 JPanel。第一个是 Furutsu7,它是包含我的游戏的主要 JPanel。第二个 JPanel 是启动 Jbutton。我想要完成的是在用户单击 Jbutton 之后,将出现 Furutsu7 JPanel。

这是我创建按钮的设置类。

public void setup(){
JFrame f = new JFrame("Start ");
JPanel card1 = new JPanel();
JPanel card2 = new JPanel();


cards = new JPanel(new CardLayout());

JButton Card1Button = new JButton("Start");
card1.add(Card1Button);
JButton Card2Button = new JButton("Exit");
card2.add(Card2Button);

cards.add(card1, "C1");
cards.add(card2, "C2");

f.add(cards, BorderLayout.CENTER);

f.setTitle("Furutsu");
f.setSize(500, 300);
f.setLocationRelativeTo(null);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);



}

我需要帮助的是,为了切换到 Furutsu JPanel,我应该在执行的操作中添加什么。

public void actionPerformed(ActionEvent e) {


}

最佳答案

使您的 CardLayout 成为该类的一个字段,以便您可以更轻松地在 actionPerformed 方法中访问它。否则,您将需要调用 (CardLayout) cards.getLayout(),这是一件风险更大的事情。例如:

public class MyClass implements ActionListener {
private CardLayout cardLayout = new CardLayout();
private JPanel cards = new JPanel(cardLayout);

public void setup(){
JFrame f = new JFrame("Start ");
JPanel card1 = new JPanel();
JPanel card2 = new JPanel();

// cards = new JPanel(new CardLayout());

JButton Card1Button = new JButton("Start");
card1.add(Card1Button);
JButton Card2Button = new JButton("Exit");
card2.add(Card2Button);

cards.add(card1, "C1");
cards.add(card2, "C2");

f.add(cards, BorderLayout.CENTER);

f.setTitle("Furutsu");
f.setSize(500, 300);
f.setLocationRelativeTo(null);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}

然后就可以直接引用了:

@Override
public void actionPerformed(ActionEvent e) {
// now you can call methods on your cardLayout variable:
cardLayout.show(...); // I'll leave it to you to figure out what to put in here
}

有关 CardLayout 的更多信息,请查看其 tutorial

请注意,如果您只想按正向或反向顺序交换组件,请查看 CardLayout 的其他方法,例如 next(cards)previous(cards)

关于java - 单击 Jbutton 后更改 JPanel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36880915/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com