Swing超基础学习总结——4、CardLayout与ActionListener

原创 2016年08月28日 16:01:36


使用CardLayout制作切换卡

案例代码:

public class CardLayoutAndListenerTest {

    /**
     * @param args
     */
    static JButton preButton;
    static JButton nextButton;

    static Panel controlPanel;
    static Panel cardPanel;

    static CardLayout c;

    public static void main(String[] args) {

        controlPanel = new Panel();
        controlPanel.setLayout(new FlowLayout());
        cardPanel = new Panel();
        cardPanel.setLayout(new FlowLayout());
        c = new CardLayout();

        JFrame frame = new JFrame();
        frame.setSize(300, 200);
        frame.setLayout(new BorderLayout());
        frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);

        cardPanel.setLayout(c);

        for (int i = 0; i < 5; i++) {
            // 按顺序添加页,第一个添加在最上面,依次类推
            cardPanel.add(new JButton("按钮" + i));
        }
        preButton = new JButton("前一张");
        nextButton = new JButton("后一张");


        //绑定监听
        preButton.addActionListener(actionListener);
        nextButton.addActionListener(actionListener);

        controlPanel.add(preButton);
        controlPanel.add(nextButton);

        frame.add(cardPanel, BorderLayout.CENTER);
        frame.add(controlPanel, BorderLayout.SOUTH);

    }

    //注册监听
    static ActionListener actionListener = new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            // TODO Auto-generated method stub
            //对应某个按钮的变量名
            if (e.getSource() == preButton) {
                // 打开前一页
                c.previous(cardPanel);
            }
            if (e.getSource() == nextButton) {
                // 打开后一页
                c.next(cardPanel);
            }
        }
    };

}

CardLayout详细说明

卡片布局,切换卡片,即局部刷新

给某一容器设置卡片布局后,添加每一个组件都当做是一页,第一个组件即第一页,注意这里是一个组件(也可是一个容器)为一页

“切换卡”主要方法

使用卡片布局的对象执行next方法(后一页)或previous方法(前一页)
方法参数为执行切换卡的容器对象


ActionListener详细说明

使用方法

方法1:
①注册监听:

ActionListener actionListener = new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            ......
        }
};

②绑定监听:

组件对象.addActionListener(actionListener);

方法2:

①实现ActionListener,重写方法

@Override
    public void actionPerformed(ActionEvent e) {
        // TODO Auto-generated method stub
        if (e.getSource() == button) {
            ……
        }
    }

②绑定监听

组件对象.addActionListener(this);

案例代码(统计点击次数):

上述使用方法1已经在CardLayout的代码中展示了,接下的案例是用使用方法2来现实的。

public class Test {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        ActionFrame actionFrame = new ActionFrame("ActionListener实例");
    }

}

class ActionFrame extends JFrame implements ActionListener {
    JButton button;
    int i = 0;
    JLabel jLabel;

    public ActionFrame(String title) {
        // TODO Auto-generated constructor stub
        setSize(300, 200);
        setTitle(title);
        setLayout(new BorderLayout());
        setLocationRelativeTo(null);
        setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        setVisible(true);

        jLabel = new JLabel("点击次数:0", JLabel.CENTER);
        // 设置JLable中的文字居中
        // jLabel.setHorizontalAlignment(JLabel.CENTER);

        button = new JButton("点击");
        button.addActionListener(this);

        Container container = getContentPane();
        container.add(jLabel, BorderLayout.CENTER);
        container.add(button, BorderLayout.SOUTH);

    }

    @Override
    public void actionPerformed(ActionEvent e) {
        // TODO Auto-generated method stub
        if (e.getSource() == button) {
            i++;
            jLabel.setText("点击次数:" + i);
        }
    }

}

注:第一个案例中用了很多static,静态变量是很浪费内存的,但是由于main方法为静态所以全局变量只能用静态变量,因此大部分情况下还是比较适合用第二个案例中的方式。


关于swing的学习还剩下菜单和列表,加油!!

版权声明:本文为博主原创文章,未经博主允许不得转载。

高效相似度计算 LSH minHash simHash的学习

相似度计算: 1 局部敏感哈希 2 minHash 3 simHash

Java Swing界面编程(24)---事件处理:键盘事件及监听处理

在Swing的事件处理中也可以对键盘的操作进行监听,直接使用KeyListener接口即可。 package com.beyole.util; import java.awt.event.KeyE...

Java Swing事件处理——行为事件及监听处理 ActionListener和内部类

下面是一个按钮的实例 package com.liuyanzhao; import java.awt.Button; import java.awt.Color; impo...

Swing超基础学习总结——2、简单布局:FlowLayout、GridLayout、BorderLayout、BoxLayout

其中重要讲三种布局,依靠的是JFrame容器FlowLayout 案例 构造参数说明 BorderLayout 案例 构造参数说明 BoxLayout 案例 构造参数说明FlowLayout最简单的布...

java基础学习——Swing图形化用户界面编程

GUI概述 早期计算机系统中,电脑向用户提供的是单调、枯燥、纯字符状态的“命令行界面(CLI)”。就是到现在,我们还可以依稀看到它们的身影:在Windows中开个DOS窗口,就可看到历史的足迹。...

java Swing布局管理器之CardLayout布局

CardLayout布局: CardLayout布局管理器能够帮助用户处理两个以至更多的成员共享同一显示空间,它把容器分成许多层,每层的显示空间占据整个容器的大小,但是每层只允许放置一个组件,当然每层...

java零基础入门知识3.1——Swing基础知识总结(二)

#时隔半个月后重新复习一遍Swing 顺便在之前整理的基础上在增加继续整理一些基础知识......# Java Swing 组件基础 Java Swing组件:即指按钮、标签、树、表格、框架等能用...

java零基础入门知识3.3——Swing基础知识总结(四)

本章介绍如何使用布局管理器组件 1、BorderLayout: 容器分为5部分,每个区域可容纳一个组件 (1)BorderLayout的构造 BorderLayout(int h,int v)创建一个...

java零基础入门知识3.0——Swing基础知识总结(一)

自学并整理一些swing基础知识,希望能对swing学习有所帮助。 1、UI 组件 什么是UI?  答:UI即“用户界面”。实际上,在计算机和用户的交互之中扮演角色的任何对象都是 UI 的组成部分。...

Mysql学习总结(4)——MySql基础知识、存储引擎与常用数据类型

1、基础知识 1.1、数据库概述 简单地说:数据库(Database或DB)是存储、管理数据的容器; 严格地说:数据库是“按照某种数据结构对数据进行组织、存储和管理的容器”。 ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Swing超基础学习总结——4、CardLayout与ActionListener
举报原因:
原因补充:

(最多只允许输入30个字)