`
ljz0898
  • 浏览: 224273 次
  • 性别: Icon_minigender_1
  • 来自: 海南海口
社区版块
存档分类
最新评论

CardLayout 简单实现Demo

阅读更多
package cn.ljz.test;

import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.border.Border;

/**
 * @theme 牌式布局实现
 * @author lijingzan
 * @time 2010/11/9
 * @version 1.0
 * 
 */
public class TestCardLayout {
	private Page page = null;
	private static int currentCount = 1;// 计算张数
	private JFrame jframe;
	private CardLayout cardLayout;// 牌式布局
	@SuppressWarnings("unused")
	private JPanel bottomJpanel, topJpanel;
	@SuppressWarnings("unused")
	private JButton jb_1, jb_2, jb_3, jb_4, jb_5, jb_6, jb_first, jb_last,
			jb_next, jb_pre;
	private JTextArea jtextArea;

	public TestCardLayout() {
		page = new Page(6);
		cardLayout = new CardLayout();
		jframe = new JFrame();
		bottomJpanel = new JPanel();
		topJpanel = new JPanel();
		jtextArea = new JTextArea();
		jb_1 = new JButton("按钮一");
		jb_2 = new JButton("按钮二");
		jb_3 = new JButton("按钮三");
		jb_4 = new JButton("按钮四");
		jb_5 = new JButton("按钮五");
		jb_6 = new JButton("按钮六");
		jb_first = new JButton("第一张 ");
		jb_last = new JButton("最后一张");
		jb_next = new JButton("下一张");
		jb_pre = new JButton("前一张");
		init();

	}

	public void init() {
		topJpanelInit();
		bottomJpanelInit();
		Container container = jframe.getContentPane();
		container.add(bottomJpanel, BorderLayout.CENTER);// 加入下面的按钮
		container.add(topJpanel, BorderLayout.NORTH);
		eventListener();
	}

	public void bottomJpanelInit() {
		bottomJpanel.setLayout(new FlowLayout());
		bottomJpanel.add(jb_first);
		bottomJpanel.add(jb_next);
		bottomJpanel.add(jb_pre);
		bottomJpanel.add(jb_last);
	}

	public void topJpanelInit() {
		topJpanel.setLayout(cardLayout);
		topJpanel.add(jb_1, "按钮一");
		topJpanel.add(jb_2, "按钮二");
		topJpanel.add(jb_3, "按钮三");
		topJpanel.add(jb_4, "按钮四");
		topJpanel.add(jb_5, "按钮五");
		topJpanel.add(jb_6, "按钮六");
	}

	public void showMe() {
		jframe.setSize(200, 200);
		jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		jframe.setVisible(true);
	}

	//加入事件监听
	public void eventListener() {
		jb_first.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				currentCount = 1;				
				cardLayout.show(topJpanel, buttonText(page.first()));
			}

		});
		jb_last.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				currentCount = page.getTotalCount();
				cardLayout.show(topJpanel, buttonText(page.last()));
			}

		});
		jb_pre.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				currentCount = currentCount - 1;
				if(page.isFirst(currentCount)){
					currentCount = 1;
				}else{
				}
				cardLayout.show(topJpanel, buttonText(page.pre(currentCount)));
			}

		});
		jb_next.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				currentCount = currentCount + 1;
				if(page.isEnd(currentCount)){
					currentCount = page.getTotalCount();
				}else{}
				cardLayout.show(topJpanel, buttonText(page.next(currentCount)));
			}

		});
	}
	
  

	// 根据输入的数返回按钮的文本
	public String buttonText(int i) {
		String setButtonText = null;
		switch (i) {
		case 1:
			setButtonText = "按钮一";
			break;
		case 2:
			setButtonText = "按钮二";
			break;
		case 3:
			setButtonText = "按钮三";
			break;
		case 4:
			setButtonText = "按钮四";
			break;
		case 5:
			setButtonText = "按钮五";
			break;
		case 6:
			setButtonText = "按钮六";
			break;
		default:
			setButtonText = "操作有误";
			break;
		}
		return setButtonText;
	}

	public static void main(String[] args) {
		TestCardLayout test = new TestCardLayout();
		test.showMe();
	}
}


package cn.ljz.test;

/**
 * @theme 分页显示
 * @author lijingzan
 * @time 2010/11/09
 */
public class Page {
	private int totalCount;// 总张数

	public int getTotalCount() {
		return totalCount;
	}

	public void setTotalCount(int totalCount) {
		this.totalCount = totalCount;
	}

	public Page(int totalCount) {
		this.totalCount = totalCount;
	}

	// 获得后面一张
	public int next(int currentCount) {
		if (isEnd(currentCount)) {
			return totalCount;
		} else {
			return currentCount ;
		}
	}

	// 获得前面一张
	public int pre(int currentCount) {
		if (isFirst(currentCount)) {
			return 1;
		} else {
			return currentCount ;
		}
	}

	// 返回第一张
	public int first() {
		return 1;
	}

	// 返回最后一张
	public int last() {
		return totalCount;
	}

	// 判断是否是最后一张
	public boolean isEnd(int currentCount) {
		if (currentCount < totalCount) {
			return false;
		} else {
			return true;
		}
	}

	// 判断是否是第一张
	public boolean isFirst(int currentCount) {
	
		if(currentCount>1){
			return false;
		}else{
			return true;
		}
	}
}



分享到:
评论

相关推荐

    Java Swing CardLayout卡片布局的实现示例

    Java Swing CardLayout 卡片布局的实现示例 Java Swing CardLayout 卡片布局是 Java 中的一种布局管理器,它将容器中的每个组件看作一张卡片,一次只能看到一张卡片,容器则充当卡片的堆栈,默认显示第一张卡片。...

    CardLayout

    总结,`CardLayout`是Java Swing中一个强大且灵活的工具,它使得在有限的空间内管理多个组件变得简单。理解其工作原理和如何使用,可以帮助你创建更加动态和交互性强的用户界面。通过实践和掌握这些知识点,你的Java...

    Netbeans 卡片式窗口实例(CardLayout)

    NetBeans是一款强大的集成开发环境(IDE),广泛...总的来说,`CardLayout`在NetBeans中提供了一种简洁的方式来实现多页面的GUI设计。通过熟练掌握这一布局管理器,开发者能够创建出更加灵活且功能丰富的Java桌面应用。

    CardLayout布局管理器示例

    下面将详细讲解`CardLayout`的工作原理、如何使用以及如何实现标题和描述中所述的功能。 首先,`CardLayout`将容器中的所有组件视为独立的“卡片”,每个卡片都有一个唯一的标识符(字符串)。布局管理器根据这些...

    java布局管理之CardLayout简单实例

    本文将通过一个简单的实例,详细介绍 Java 布局管理之 CardLayout 的使用和实现。 CardLayout 是一种基于卡片的布局管理方式,允许开发者在同一个容器中显示多个面板,并可以在这些面板之间进行切换。这种布局方式...

    Java布局管理GridLayOut BorderLayOut CardLayOut

    本资源包含GridLayOut、BorderLayOut和CardLayOut这三种主要布局管理器的示例,帮助开发者深入理解它们的用法和特点。 1. **GridLayOut**: GridLayOut将组件组织成一个网格结构,其中每个组件占据网格中的一个...

    java swing-CardLayout的使用

    CardLayout 是 Java Swing 库提供的一种布局管理器,用于在容器中管理多个组件的可见性,并允许用户在它们之间切换。...通过切换可见组件,在用户界面上实现不同的页面、面板或视图之间的切换效果。

    使用Swing的CardLayout布局方式制作上一步下一步的对话框

    下面我们将详细讨论如何使用`CardLayout`来实现这样的功能。 首先,`CardLayout`的核心在于其`addLayoutComponent(Component comp, String name)`方法,用于将组件添加到布局中,并为每个组件分配一个唯一的标识符...

    JavaSwing编程demo

    Swing 提供了几种内置的布局管理器,如 FlowLayout、BorderLayout、GridLayout、CardLayout 和 GroupLayout。例如,FlowLayout 按照从左到右,然后从上到下的顺序排列组件;BorderLayout 分为五个区域:北、南、东、...

    布局管理器(一)——CardLayout

    NULL 博文链接:https://alog2012.iteye.com/blog/1613294

    swing layout-demo

    4. **组合布局**:有时会需要混合使用多种布局管理器,例如在某个区域使用GridLayout,其他区域使用BorderLayout,这可以通过嵌套面板实现。 5. **事件处理**:可能包含了一些响应用户操作(如按钮点击)的事件...

    java-界面组件案例大全(Demo).rar_DEMO_JAVA SWING案例_java swing Demon 大全_ja

    每个Demo通常会展示一个或多个组件的使用,或者特定功能的实现,例如事件处理、布局管理、外观定制等。 在事件处理方面,Java Swing 使用事件监听器模型,开发者可以通过添加ActionListener、MouseListener等监听器...

    java桌面程序swing demo实例

    3. **布局管理器**: Swing提供了多种布局管理器,如FlowLayout、BorderLayout、GridLayout、CardLayout和GridBagLayout,用于控制组件在容器(如JFrame或JPanel)内的排列方式。 4. **事件监听器**: Swing使用事件...

    swing 组件 demo

    Swing组件的布局管理器也是其重要部分,如FlowLayout、BorderLayout、GridLayout、CardLayout和GridBagLayout等,它们负责决定组件在容器中的位置和大小。开发者可以根据需求选择合适的布局管理器,以达到理想的效果...

    java gui demo

    2. **布局管理器(Layout Managers)**:Java GUI支持不同的布局管理器,如FlowLayout、BorderLayout、GridLayout、CardLayout和GridBagLayout,用于自动调整组件的位置和大小。 3. **事件处理(Event Handling)**...

    java GUI 实现的简单 计算器

    这个"java GUI实现的简单计算器"项目就是一个很好的实例,适合初学者学习如何结合Java的基础知识和Swing库来构建桌面应用。下面我们将深入探讨这个项目的相关知识点。 首先,`Calculator.java`文件很可能是计算器的...

    Java中CardLayout布局管理器.pdf

    Java中CardLayout布局管理器.pdf 学习资料 复习资料 教学资源

    swing demo例子

    在"Swing demo例子"这个主题中,我们将深入探讨Swing的基本概念、主要组件以及如何通过实例来学习和应用Swing。 Swing库为开发者提供了大量预定义的组件,如按钮(JButton)、文本框(JTextField)、标签(JLabel)...

Global site tag (gtag.js) - Google Analytics