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)