java的CardLayout

CardLayout允许我们在更复杂的拥有真正的文件夹卡片与一条边相遇的环境里创建大致相同于“卡片式对话框”的布局,我们必须压下一个卡片使不同的对话框带到前面来。在AWT里不是这样的:CardLayout是简单的空的空格,我们可以自由地把新卡片带到前面来。(JFC/Swing库包括卡片式的窗格看起来非常的棒,且可以我们处理所有的细节。)

1. 联合布局(Combining layouts)
下面的例子联合了更多的布局类型,在最初只有一个布局管理器被程序片或应用程序操作看起来相当的困难。这是事实,但如果我们创建更多的面板对象,每个面板都能拥有一个布局管理器,并且像被集成到程序片或应用程序中一样使用程序片或应用程序的布局管理器。这就象下面程序中的一样给了我们更多的灵活性:
 

//: CardLayout1.java
// Demonstrating the CardLayout
import java.awt.*;
import java.applet.Applet;

class ButtonPanel extends Panel {
  ButtonPanel(String id) {
    setLayout(new BorderLayout());
    add("Center", new Button(id));
  }
}

public class CardLayout1 extends Applet {
  Button
    first = new Button("First"),
    second = new Button("Second"),
    third = new Button("Third");
  Panel cards = new Panel();
  CardLayout cl = new CardLayout();
  public void init() {
    setLayout(new BorderLayout());
    Panel p = new Panel();
    p.setLayout(new FlowLayout());
    p.add(first);
    p.add(second);
    p.add(third);
    add("North", p);
    cards.setLayout(cl);
    cards.add("First card",
      new ButtonPanel("The first one"));
    cards.add("Second card",
      new ButtonPanel("The second one"));
    cards.add("Third card",
      new ButtonPanel("The third one"));
    add("Center", cards);
  }
  public boolean action(Event evt, Object arg) {
    if (evt.target.equals(first)) {
      cl.first(cards);
    }
    else if (evt.target.equals(second)) {
      cl.first(cards);
      cl.next(cards);
    }
    else if (evt.target.equals(third)) {
      cl.last(cards);
    }
    else
      return super.action(evt, arg);
    return true;
  }
} ///:~

这个例子首先会创建一种新类型的面板:BottonPanel(按钮面板)。它包括一个单独的按钮,安放在BorderLayout的中央,那意味着它将充满整个的面板。按钮上的标签将让我们知道我们在CardLayout上的那个面板上。
在程序片里,面板卡片上将存放卡片和布局管理器CL因为CardLayout必须组成类,因为当我们需要处理卡片时我们需要访问这些句柄。
这个程序片变成使用BorderLayout来取代它的默认FlowLayout,创建面板来容纳三个按钮(使用FlowLayout),并且这个面板安置在程序片末尾的“North”。卡片面板增加到程序片的“Center”里,有效地占据面板的其余地方。
当我们增加BottonPanels(或者任何其它我们想要的组件)到卡片面板时,add()方法的第一个自变量不是“North”,“South”等等。相反的是,它是一个描述卡片的字符串。如果我们想轻击那张卡片使用字符串,我们就可以使用,虽然这字符串不会显示在卡片的任何地方。使用的方法不是使用action();代之使用first()、next()和last()等方法。请查看我们有关其它方法的文件。
在Java中,使用的一些卡片式面板结构十分的重要,因为(我们将在后面看到)在程序片编程中使用的弹出式对话框是十分令人沮丧的。对于Java 1.0版的程序片而言,CardLayout是唯一有效的取得很多不同的“弹出式”的窗体。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索布局
, 程序
, new
, 卡片
, 卡片式
, 布局问题java borderlayout
, java card
, BorderLayout布局
, 面板
卡片布局
java cardlayout、cardlayout、cardlayout 用法、swing cardlayout、cardlayout show,以便于您获取更多的相关知识。

时间: 2024-08-04 08:37:47

java的CardLayout的相关文章

Java混淆编译器(转apusic.com)

编译 最近试用了几个Java混淆器(Java Obfuscator),感觉没有一个完全另人满意的,于是想干脆自己写一个得了.翻了几页Java虚拟机规范之后突发奇想,别的混淆器都是在编译好的byte code上做文章,能不能从源码直接编译成经过混淆的class文件呢?就这样花了一个多星期的时间写了一个Java混淆编译器(Java Obfuscator Compiler). Q: 什么是混淆器?A: 由于Java程序运行时是动态连接的,因此编译成的目标文件中包含有符号表,使得Java程序很容易被反编

Java语言实现简单FTP软件------>上传下载队列窗口的实现(七)

1.首先看一下队列窗口的界面                                       2.看一下上传队列窗口的界面                                 3.看一下下载队列窗口的界面                       4.队列窗口的实现 package com.oyp.ftp.panel.queue; import static java.awt.BorderLayout.CENTER; import static java.awt.Bor

学通Java的24堂课

1.JAVA_HOME只是为了保存安装路径,完全可以换成其他的,再使用%JAVA_HOME%引用,只不过第三方软件默认使用了JAVA_HOME2.palette:调色板,又叫组件管理器3.Jlabel只用于显示文字和图像,在界面设计器里其text属性是显示中文名字的:Variable显示当前的组件caption,也可以用英文设置.4.单击窗体的标题栏选择整个窗体,其他部分只选择了内容面板:也可以在Structure里面直接选择相应的名字. 5.引入和管理库最好的是添加用户库,然后在工程上右键选择

frame-求救。为什么键盘监听事件不响应了。。

问题描述 求救.为什么键盘监听事件不响应了.. mport java.awt.CardLayout; import java.awt.Color; import java.awt.Dimension; import java.awt.Font; import java.awt.Graphics; import java.awt.Image; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; impor

CardLayout布局练习(小的图片浏览器)

/* 涉及Panel中的图片的加载,还有Frame的关闭的方法, CardLayout(int hgap, int vgap)就会决定卡片面板的大小 匿名类的使用... */ import java.awt.*; import java.awt.event.*; import javax.swing.*; public class CardLayoutDemo extends Frame{ Panel pCards=new Panel();//卡片面板 CardLayout Clayout=ne

java的卡片式对话框

在本章的前部,向我们介绍了老式的CardLayout,并且注意到我们怎样去管理我们所有的卡片开关.有趣的是,有人现在认为这是一种不错的设计.幸运的是,Swing用JTabbedPane对它进行了修补,由JTabbedPane来处理这些卡片,开关和其它的任何事物.对比CardLayout和JTabbedPane,我们会发现惊人的差异. 下面的程序例子十分的有趣,因为它利用了前面例子的设计.它们都是做为JPanel的衍生物来构建的,因此这个程序将安放前面的每个例子到它自己在JTabbedPane的窗

Java GUI:SWT/Swing/AWT的介绍及比较

本文通过对 Eclipse 的SWT 和 Java Swing.Abstract Windows Toolkit (AWT)GUI 工具包进行比较,可以帮助新应用程序的开发人员从中选择适当的 工具. 您可以通过本文了解对每个工具包的基本特性的介绍,以及使用 每个工具包的优缺点. 简介 developerWorks 上另外一些作者已 经展示了如何在 Swing 和 SWT 之间很好地进行迁移(参见 参考资料).本文 的目标是帮助您在开始开发项目之前确定选择使用哪个 GUI 工具包. 但 是首先我们

java编写电话管理系统

import java.awt.*; import java.awt.event.*; import java.util.*; class p1 extends Panel { Label l1; Font f=new Font("宋体",Font.BOLD,20); p1() { setLayout(new GridLayout(1,1)); l1=new Label("用户电话号码管理",Label.CENTER); l1.setFont(f); add(l1)

java面试知识(来自牛客网)

接口和抽象类的区别是什么? v接口和抽象类的区别是什么?   Java提供和支持创建抽象类和接口.它们的实现有共同点,不同点在于:接口中所有的方法隐含的都是抽象的.而抽象类则可以同时包含抽象和非抽象的方法.类可以实现很多个接口,但是只能继承一个抽象类类如果要实现一个接口,它必须要实现接口声明的所有方法.但是,类可以不实现抽象类声明的所有方法,当然,在这种情况下,类也必须得声明成是抽象的.抽象类可以在不提供接口方法实现的情况下实现接口.Java接口中声明的变量默认都是final的.抽象类可以包含非