`
ljz0898
  • 浏览: 230242 次
  • 性别: 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;
		}
	}
}



分享到:
评论

相关推荐

    swing demo例子

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

    java-GUI界面组件案例大全(内含139个完整Demo)

    每个容器都有一个布局管理器,如FlowLayout、BorderLayout、GridLayout、CardLayout和BoxLayout,它们决定了组件在容器中的排列方式。 3. 菜单与菜单条:`JMenu`和`JMenuBar`用于创建应用的菜单系统,` JMenuItem`...

    JAVA期末作品图书管理系统娱乐版--下载之前看一下博客,是否是你需要的,不要盲目下载无用资源。

    - 采用了`CardLayout`布局管理器来实现动态切换不同功能界面的效果。 #### MBS类设计与实现 - 用于处理图书管理的核心业务逻辑。 - 包含了一个静态数组`books`来存储图书对象。 - 提供了一系列方法来实现添加、显示...

    SwingDemos.7z

    2. **布局管理器**:如FlowLayout、BorderLayout、GridLayout、GridBagLayout和CardLayout,这些示例会帮助你理解如何有效地组织和调整组件的位置和大小。 3. **事件处理**:Swing通过EventListener和...

    JAVA布局管理器及事件代码处理

    “计算器解题思路.txt”可能涵盖了如何创建一个简单的计算器应用,这通常涉及到键盘事件监听(KeyListener)或者ActionListener,以及计算逻辑的实现。事件处理可能是根据按键的按下(KeyEvent)或按钮的点击...

    JavaGuiDemo:玩Java GUI和窗口构建器

    这些组件是构建简单GUI的基本元素,每个组件都有其特定的用途和属性。 3. **Swing组件**:Swing库扩展了AWT,提供了更丰富的组件集,如JButton、JLabel、JTextField、JTextArea等。Swing组件更加现代化,支持模型-...

Global site tag (gtag.js) - Google Analytics