大吃一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日

悬赏问题

  • ¥15 Omi框架如何兼容Vue
  • ¥15 windows api中有没有可以通过scsi设备发送离散buffer的接口,如何解决?(相关搜索:linux系统|结构体)
  • ¥15 r语言练习题,三个问题都有疑惑
  • ¥15 绝对路径都行,为什么相对路径不行
  • ¥20 ARM64架构下SSCMS部署问题
  • ¥20 请教如何让移动端的热区自适应
  • ¥30 为什么深度学习网络训练会出现训练集和测试集准确率和损失都不变的情况
  • ¥66 如何adb的情况下找打手机隐藏的文件
  • ¥15 (标签-3D|关键词-色模型)
  • ¥15 实时声纹降噪算法进行无关说话人语音抑制