Java CardLayout布局方式

以下窗口程序演示了CardLayout布局方式,请把程序改为由测试类、视图类、监视器类结构组成。

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Sy4_4 implements ActionListener {
    JFrame jf;
    JPanel cardPan, btPan;
    CardLayout card;
    JButton bt1,bt2,bt3,bt4;
    public Sy4_4() {
        jf = new JFrame();
        cardPan = new JPanel();
        btPan = new JPanel();
        card = new CardLayout(5,10);
        bt1 = new JButton("第一页");
        bt2 = new JButton("上一页");
        bt3 = new JButton("下一页");
        bt4 = new JButton("最后页");        
        bt1.addActionListener(this);
        bt2.addActionListener(this);
        bt3.addActionListener(this);
        bt4.addActionListener(this);        
        jf.setLayout(null);
        jf.setTitle("卡片式布局");
        jf.setSize(350,300);
        jf.setResizable(false);        
        cardPan.setLayout(card);
        cardPan.setBounds(10,10,320,200);
        for(int i=1; i<=4; i++) {
            cardPan.add(new JLabel("第"+i+"页"));
        }        
        btPan.setLayout(new GridLayout(1,4));
        btPan.setBounds(10,220,320,25);
        btPan.add(bt1);
        btPan.add(bt2);
        btPan.add(bt3);
        btPan.add(bt4);        
        jf.add(cardPan);
        jf.add(btPan);
        jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        jf.setVisible(true);        
    }
    public void actionPerformed(ActionEvent e) {
        JButton bt = (JButton)e.getSource();
        if(bt==bt1)
            card.first(cardPan);
        else if(bt==bt2)
            card.previous(cardPan);
        else if(bt==bt3)
            card.next(cardPan);
        else 
            card.last(cardPan);            
    }
    public static void main(String[] args) {
        new Sy4_4();
    }
}

参考如下:

public class Sy4_4 extends JFrame {
    JPanel cardPan, btPan;
    CardLayout card;
    JButton bt1,bt2,bt3,bt4;

    public Sy4_4(String title) {
        super(title);
        cardPan = new JPanel();
        btPan = new JPanel();
        card = new CardLayout(5,10);
        bt1 = new JButton("第一页");
        bt2 = new JButton("上一页");
        bt3 = new JButton("下一页");
        bt4 = new JButton("最后页");
        ButtonActionListener listener = new ButtonActionListener();
        bt1.addActionListener(listener);
        bt2.addActionListener(listener);
        bt3.addActionListener(listener);
        bt4.addActionListener(listener);
        this.setLayout(null);
        this.setSize(350,300);
        this.setResizable(false);
        cardPan.setLayout(card);
        cardPan.setBounds(10,10,320,200);
        for(int i=1; i<=4; i++) {
            cardPan.add(new JLabel("第"+i+"页"));
        }
        btPan.setLayout(new GridLayout(1,4));
        btPan.setBounds(10,220,320,25);
        btPan.add(bt1);
        btPan.add(bt2);
        btPan.add(bt3);
        btPan.add(bt4);
        this.add(cardPan);
        this.add(btPan);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setVisible(true);
    }

    class ButtonActionListener implements ActionListener {
        @Override
        public void actionPerformed(ActionEvent e) {
            JButton bt = (JButton)e.getSource();
            if(bt==bt1)
                card.first(cardPan);
            else if(bt==bt2)
                card.previous(cardPan);
            else if(bt==bt3)
                card.next(cardPan);
            else
                card.last(cardPan);
        }
    }
}

public class Test {

    public static void main(String[] args) {

        new Sy4_4("卡片式布局");

    }
}

img


如有帮助,欢迎采纳哈!

在这里插入图片描述

本人的开源项目,欢迎star支持下!!!