Java Swing CardLayout

2018-01-09 19:23 更新

Java Swing教程 - Java Swing CardLayout


CardLayout将组件布局为一堆卡。在CardLayout中只能看到顶部的一张卡。

CardLayout一次只能显示一个组件。

以下步骤显示如何为容器使用CardLayout:

首先,创建一个容器,如JPanel。

JPanel cardPanel = new JPanel();

然后,创建一个CardLayout对象。

CardLayout  cardLayout = new CardLayout();

然后设置容器的布局管理器。

cardPanel.setLayout(cardLayout);

之后,将组件添加到容器中。 我们需要给每个组件一个名称。

cardPanel.add(new JButton("Card 1"),  "myCard");

“myCard"可以在CardLayout的show()方法中使用,以使此卡可见。

最后,从CardLayout调用next()方法显示下一张卡。

cardLayout.next(cardPanel);

CardLayout类有几种方法来遍历组件。

默认情况下,它显示添加到它的第一个组件。

所有与显示相关的方法都将容器作为参数。

第一个()和last()方法分别显示第一个和最后一个卡。

上一个()和下一个()方法显示当前显示的卡的上一个和下一个卡。

如果最后一张卡显示,调用next()方法显示第一张卡。如果第一个卡显示,调用previous()方法显示最后一个卡。



例子

以下代码演示如何使用CardLayout。

import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.awt.Container;
import java.awt.Dimension;
// w ww. j  av  a  2 s. c  om
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class Main {
  public static void main(String[] args) {
    JFrame frame = new JFrame("CardLayout");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    Container contentPane = frame.getContentPane();

    JPanel buttonPanel = new JPanel();
    JButton nextButton = new JButton("Next");
    buttonPanel.add(nextButton);
    contentPane.add(buttonPanel, BorderLayout.SOUTH);

    final JPanel cardPanel = new JPanel();
    final CardLayout cardLayout = new CardLayout();
    cardPanel.setLayout(cardLayout);

    for (int i = 1; i <= 5; i++) {
      JButton card = new JButton("Card " + i);
      card.setPreferredSize(new Dimension(200, 200));
      String cardName = "card" + 1;
      cardPanel.add(card, cardName);
    }
    contentPane.add(cardPanel, BorderLayout.CENTER);
    nextButton.addActionListener(e -> cardLayout.next(cardPanel));

    frame.pack();
    frame.setVisible(true);
  }
}


以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号