Java Swing Card布局更改面板按用户操作显示

Java Swing Card布局更改面板按用户操作显示,java,swing,jpanel,cardlayout,Java,Swing,Jpanel,Cardlayout,我目前正在编写一个接口,其中a有一个JFrame类和两个JPanel类。首次执行脚本时,将显示面板A。我在面板a中有一个JButton,单击它时,我希望显示面板B而不是面板a 我有什么办法可以做到这一点吗?请阅读 您可以使用CardLayout的next()方法来显示下一张卡 或者您可以使用show(…)用于显示特定卡 简单的例子: import java.awt.BorderLayout; import java.awt.CardLayout; import java.awt.event.Ac

我目前正在编写一个接口,其中a有一个
JFrame
类和两个
JPanel
类。首次执行脚本时,将显示面板A。我在面板a中有一个
JButton
,单击它时,我希望显示面板B而不是面板a

我有什么办法可以做到这一点吗?

请阅读

您可以使用
CardLayout
next()
方法来显示下一张卡

或者您可以使用
show(…)用于显示特定卡

简单的例子:

import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class Example {

    public static void main(String[] args){
        JFrame frame = new JFrame();

        final JPanel panel = new JPanel(new CardLayout());

        JLabel l1 = new JLabel("1");
        JLabel l2 = new JLabel("2");
        JLabel l3 = new JLabel("3");

        panel.add(l1,"l1");
        panel.add(l2,"l2");
        panel.add(l3,"l3");

        JButton btn = new JButton("next");
        btn.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent arg0) {
                CardLayout layout = (CardLayout) panel.getLayout();
                layout.next(panel);
            }
        });

        JButton btnSpec = new JButton("l3");
        btnSpec.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent arg0) {
                CardLayout layout = (CardLayout) panel.getLayout();
                layout.show(panel, "l3");
            }
        });

        frame.add(panel);
        frame.add(btn,BorderLayout.SOUTH);
        frame.add(btnSpec,BorderLayout.NORTH);
        frame.pack();
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
    }

}
读一读

您可以使用
CardLayout
next()
方法来显示下一张卡

或者您可以使用
show(…)用于显示特定卡

简单的例子:

import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class Example {

    public static void main(String[] args){
        JFrame frame = new JFrame();

        final JPanel panel = new JPanel(new CardLayout());

        JLabel l1 = new JLabel("1");
        JLabel l2 = new JLabel("2");
        JLabel l3 = new JLabel("3");

        panel.add(l1,"l1");
        panel.add(l2,"l2");
        panel.add(l3,"l3");

        JButton btn = new JButton("next");
        btn.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent arg0) {
                CardLayout layout = (CardLayout) panel.getLayout();
                layout.next(panel);
            }
        });

        JButton btnSpec = new JButton("l3");
        btnSpec.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent arg0) {
                CardLayout layout = (CardLayout) panel.getLayout();
                layout.show(panel, "l3");
            }
        });

        frame.add(panel);
        frame.add(btn,BorderLayout.SOUTH);
        frame.add(btnSpec,BorderLayout.NORTH);
        frame.pack();
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
    }

}
看一看。应该给你一些想法。“谢谢达里奥”的噪音,别说了。看看。应该给你一些想法。“谢谢Dario”的噪音,别说了。