大吃一278 2022-11-30 09:00 采纳率: 84%
浏览 20
已结题

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();
    }
}

  • 写回答

1条回答 默认 最新

  • Huazie 优质创作者: 编程框架技术领域 2022-11-30 10:16
    关注

    参考如下:

    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支持下!!!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 11月30日
  • 已采纳回答 11月30日
  • 创建了问题 11月30日