【问题标题】:Changing JPanels after clicking Jbutton单击 Jbutton 后更改 JPanel
【发布时间】:2016-04-27 05:19:29
【问题描述】:

我的代码中有 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) {


}

【问题讨论】:

标签: java swing jbutton layout-manager cardlayout


【解决方案1】:

使您的 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)

【讨论】:

    猜你喜欢
    • 2023-03-12
    • 2012-06-14
    • 2013-11-16
    • 1970-01-01
    • 1970-01-01
    • 2014-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多