Java Swing CardLayout

2018-01-09 19:23 更新

Java Swing教程 - Java Swing CardLayout


CardLayout將組件布局為一堆卡。在CardLayout中只能看到頂部的一張卡。

CardLayout一次只能顯示一個組件。

以下步驟顯示如何為容器使用CardLayout:

首先,創(chuàng)建一個容器,如JPanel。

JPanel cardPanel = new JPanel();

然后,創(chuàng)建一個CardLayout對象。

CardLayout  cardLayout = new CardLayout();

然后設(shè)置容器的布局管理器。

cardPanel.setLayout(cardLayout);

之后,將組件添加到容器中。 我們需要給每個組件一個名稱。

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

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

最后,從CardLayout調(diào)用next()方法顯示下一張卡。

cardLayout.next(cardPanel);

CardLayout類有幾種方法來遍歷組件。

默認(rèn)情況下,它顯示添加到它的第一個組件。

所有與顯示相關(guān)的方法都將容器作為參數(shù)。

第一個()和last()方法分別顯示第一個和最后一個卡。

上一個()和下一個()方法顯示當(dāng)前顯示的卡的上一個和下一個卡。

如果最后一張卡顯示,調(diào)用next()方法顯示第一張卡。如果第一個卡顯示,調(diào)用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);
  }
}


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號