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類有幾種方法來遍歷組件。
默認情況下,它顯示添加到它的第一個組件。
所有與顯示相關(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); } }
更多建議: