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 中的一种布局管理器,它将容器中的每个组件看作一张卡片,一次只能看到一张卡片,容器则充当卡片的堆栈,默认显示第一张卡片。...
总结,`CardLayout`是Java Swing中一个强大且灵活的工具,它使得在有限的空间内管理多个组件变得简单。理解其工作原理和如何使用,可以帮助你创建更加动态和交互性强的用户界面。通过实践和掌握这些知识点,你的Java...
NetBeans是一款强大的集成开发环境(IDE),广泛...总的来说,`CardLayout`在NetBeans中提供了一种简洁的方式来实现多页面的GUI设计。通过熟练掌握这一布局管理器,开发者能够创建出更加灵活且功能丰富的Java桌面应用。
下面将详细讲解`CardLayout`的工作原理、如何使用以及如何实现标题和描述中所述的功能。 首先,`CardLayout`将容器中的所有组件视为独立的“卡片”,每个卡片都有一个唯一的标识符(字符串)。布局管理器根据这些...
本文将通过一个简单的实例,详细介绍 Java 布局管理之 CardLayout 的使用和实现。 CardLayout 是一种基于卡片的布局管理方式,允许开发者在同一个容器中显示多个面板,并可以在这些面板之间进行切换。这种布局方式...
以下是一个简单的示例,展示了如何使用CardLayout创建一个有三个标签页的程序: ```java import java.awt.*; public class CardLayoutExample extends Frame { public static void main(String[] args) { ...
本资源包含GridLayOut、BorderLayOut和CardLayOut这三种主要布局管理器的示例,帮助开发者深入理解它们的用法和特点。 1. **GridLayOut**: GridLayOut将组件组织成一个网格结构,其中每个组件占据网格中的一个...
CardLayout 是 Java Swing 库提供的一种布局管理器,用于在容器中管理多个组件的可见性,并允许用户在它们之间切换。...通过切换可见组件,在用户界面上实现不同的页面、面板或视图之间的切换效果。
下面我们将详细讨论如何使用`CardLayout`来实现这样的功能。 首先,`CardLayout`的核心在于其`addLayoutComponent(Component comp, String name)`方法,用于将组件添加到布局中,并为每个组件分配一个唯一的标识符...
NULL 博文链接:https://alog2012.iteye.com/blog/1613294
4. **组合布局**:有时会需要混合使用多种布局管理器,例如在某个区域使用GridLayout,其他区域使用BorderLayout,这可以通过嵌套面板实现。 5. **事件处理**:可能包含了一些响应用户操作(如按钮点击)的事件...
Swing 提供了几种内置的布局管理器,如 FlowLayout、BorderLayout、GridLayout、CardLayout 和 GroupLayout。例如,FlowLayout 按照从左到右,然后从上到下的顺序排列组件;BorderLayout 分为五个区域:北、南、东、...
每个Demo通常会展示一个或多个组件的使用,或者特定功能的实现,例如事件处理、布局管理、外观定制等。 在事件处理方面,Java Swing 使用事件监听器模型,开发者可以通过添加ActionListener、MouseListener等监听器...
Swing组件的布局管理器也是其重要部分,如FlowLayout、BorderLayout、GridLayout、CardLayout和GridBagLayout等,它们负责决定组件在容器中的位置和大小。开发者可以根据需求选择合适的布局管理器,以达到理想的效果...
3. **布局管理器**: Swing提供了多种布局管理器,如FlowLayout、BorderLayout、GridLayout、CardLayout和GridBagLayout,用于控制组件在容器(如JFrame或JPanel)内的排列方式。 4. **事件监听器**: Swing使用事件...
2. **布局管理器(Layout Managers)**:Java GUI支持不同的布局管理器,如FlowLayout、BorderLayout、GridLayout、CardLayout和GridBagLayout,用于自动调整组件的位置和大小。 3. **事件处理(Event Handling)**...
这个"java GUI实现的简单计算器"项目就是一个很好的实例,适合初学者学习如何结合Java的基础知识和Swing库来构建桌面应用。下面我们将深入探讨这个项目的相关知识点。 首先,`Calculator.java`文件很可能是计算器的...
在"Swing demo例子"这个主题中,我们将深入探讨Swing的基本概念、主要组件以及如何通过实例来学习和应用Swing。 Swing库为开发者提供了大量预定义的组件,如按钮(JButton)、文本框(JTextField)、标签(JLabel)...