摘要:java布局管理CardLayout,我们经常会通过选项卡按钮来切换程序中的界面,这些界面就相当于一张张卡片,而管理这些卡片的布局管理器就是卡片布局管理器(CardLayout)。以下是我们为大家整理的,相信大家阅读完后肯定有了自己的选择吧。
在操作程序时,我们经常会通过选项卡按钮来切换程序中的界面,这些界面就相当于一张
张卡片,而管理这些卡片的布局管理器就是卡片布局管理器(CardLayout)。卡片布局管理器将界面
看做一系列卡片,在任何时候只有其中一张卡片是可见的,这张卡片占据容器的整个区域。在
CardLayout 布局管理中经常会用到下面几个方法,如表 11-4 所示。
-12 Example12.java;’
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
//定义 Cardlayout 继承 Frame 类,实现 ActionListener 接口
class Cardlayout extends Frame implements ActionListener {
Button nextbutton,preButton;
Panel cardPanel = new Panel(); // 定义 Panel 面板放置卡片
Panel controlpaPanel = new Panel(); // 定义 Panel 面板放置按钮
CardLayout cardLayout = new CardLayout();// 定义卡片布局对象
public Cardlayout() { // 定义构造方法,设置卡片布局管理器的
属性
setSize(300, 200);
setVisible(true);
// 为窗口添加关闭事件监听器
this.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
Cardlayout.this.dispose();
}
});
cardPanel.setLayout(cardLayout); // 设置 cardPanel 面板对象为卡片布局
// 在 cardPanel 面板对象中添加 3 个文本标签
cardPanel.add(new Label("第一个界面", Label.CENTER));
cardPanel.add(new Label("第二个界面", Label.CENTER));
cardPanel.add(new Label("第三个界面", Label.CENTER));
// 创建两个按钮对象
nextbutton = new Button("下一张卡片");
preButton = new Button("上一张卡片");
// 为按钮对象注册监听器
nextbutton.addActionListener(this);
preButton.addActionListener(this);
// 将按钮添加到 controlpaPanel 中
controlpaPanel.add(preButton);
controlpaPanel.add(nextbutton);
// 将 cardPanel 面板放置在窗口边界布局的中间,窗口默认为边界布局
this.add(cardPanel, BorderLayout.CENTER);
// 将 controlpaPanel 面板放置在窗口边界布局的南区,
this.add(controlpaPanel, BorderLayout.SOUTH);
}
// 下面的代码实现了按钮的监听触发,并对触发事件做出相应的处理
public void actionPerformed(ActionEvent e) {
// 如果用户单击 nextbutton,执行的语句
if (e.getSource() == nextbutton) {
// 切换 cardPanel 面板中当前组件之后的一个组件,若当前组件为最后一个组件,则
显示第一个组件。
cardLayout.next(cardPanel);
}
if (e.getSource() == preButton) {
// 切换 cardPanel 面板中当前组件之前的一个组件,若当前组件为第一个组件,则显
示最后一个组件。
cardLayout.previous(cardPanel);
}
}
}
public class Example12 {
public static void main(String[] args) {
Cardlayout cardlayout = new Cardlayout();
}
}
编译运行程序,生成的窗口如图 11-21 所示
例 11-12 中,在顶层 Frame 容器采用 BorderLayout 布局 CENTER 区域和 SOUTH 区城分别
放置 cardPanel 和 controlpaPanel 面板其中 cardPanel 面板采用 CardLayout 中放置了两个名布
局管理器,其中放置了三个 Label 标签代表三张卡片, controlpaPanel 为“上一张卡片”和“下一张卡
片"的按钮,通过点击这两个按钮,会触发按钮的事件监听器,调用 CardLayout 的 previous()和
next( )方法对 cardPanel 面板中的卡片进行切换。CardLayout 的优点是可以使两个或更多的界面
共享一个显示空间,某一时刻只有一个界面可见。