java swing中的卡片布局

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class Demo2 {
    public static void main(String[] args) {
        new MyWindow("CardLayout的使用");
    }
}
class MyWindow extends JFrame{
    JPanel p,p1,p2,p3,pBtn;
    JButton preBtn,nextBtn,btn1,btn2,btn3;
    CardLayout card;
    public MyWindow(String title){
        super(title);
        this.setSize(500,400);
        this.setLocationRelativeTo(null);
        this.setVisible(true);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        init();
    }

    private void init() {
        p=new JPanel();
        p1=new JPanel();
        p1.setBackground(Color.red);
        p2=new JPanel();
        p2.setBackground(Color.green);
        p3=new JPanel();
        p3.setBackground(Color.yellow);
        card=new CardLayout();
        p.setLayout(card);
        p.add("p1",p1);
        p.add("p2",p2);
        p.add("p3",p3);
        this.add(p,BorderLayout.CENTER);

        pBtn=new JPanel();
        preBtn=new JButton("<<上一个");
        preBtn.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                card.previous(p);
            }
        });
        nextBtn=new JButton("下一个>>");
        nextBtn.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
               card.next(p);
            }
        });
        btn1=new JButton("1");
        btn1.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                card.show(p,"p1");
            }
        });
        btn2=new JButton("2");
        btn2.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                card.show(p,"p2");
            }
        });
        btn3=new JButton("3");
        btn3.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                card.show(p,"p3");
            }
        });
        pBtn.add(preBtn);pBtn.add(btn1);pBtn.add(btn2);pBtn.add(btn3);pBtn.add(nextBtn);
        this.add(pBtn,BorderLayout.SOUTH);
        this.validate();
    }

}
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Java Swing卡片布局(CardLayout)是一种容器布局,它可以在同一区域内显示多个组件,但每次只能显示其的一个组件。 下面是一个简单的 Java Swing 卡片布局示例: ```java import java.awt.CardLayout; import java.awt.Color; import java.awt.Container; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; public class CardLayoutExample implements ActionListener { JPanel cards; final static String BUTTONPANEL = "Button Panel"; final static String TEXTPANEL = "Text Panel"; public void addComponentToPane(Container pane) { JPanel buttonPanel = new JPanel(); buttonPanel.setBackground(Color.WHITE); buttonPanel.add(new JButton("Button 1")); buttonPanel.add(new JButton("Button 2")); buttonPanel.add(new JButton("Button 3")); JPanel textPanel = new JPanel(); textPanel.setBackground(Color.WHITE); textPanel.add(new JButton("Text Area")); cards = new JPanel(new CardLayout()); cards.add(buttonPanel, BUTTONPANEL); cards.add(textPanel, TEXTPANEL); pane.add(cards); } public void actionPerformed(ActionEvent e) { CardLayout cl = (CardLayout) (cards.getLayout()); cl.next(cards); } public static void createAndShowGUI() { JFrame frame = new JFrame("CardLayoutExample"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); CardLayoutExample demo = new CardLayoutExample(); demo.addComponentToPane(frame.getContentPane()); JButton button = new JButton("Switch to Text Panel"); button.addActionListener(demo); frame.add(button, "South"); frame.pack(); frame.setVisible(true); } public static void main(String[] args) { javax.swing.SwingUtilities.invokeLater(new Runnable() { public void run() { createAndShowGUI(); } }); } } ``` 在上面的代码,我们创建了两个 JPanel,分别是 buttonPanel 和 textPanel,然后创建了一个 cards JPanel,并使用 CardLayout 将这两个面板添加到 cards 。最后,我们创建了一个带有 "Switch to Text Panel" 按钮的 JFrame,并将 cards 添加到 JFrame 。当用户单击按钮时,我们调用 CardLayout 的 next() 方法以显示下一个面板。 通过使用卡片布局,我们可以轻松创建一个多面板的用户界面,每个面板都可以包含不同的组件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

曼诺尔雷迪亚兹

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值