Chương trình ví dụ CardLayout trong Java

01 trên 01

Mã Java:

John Lamb / Hình ảnh RF / Getty của nhiếp ảnh gia

Sau đây là ví dụ về mã Java để hiển thị > Trình quản lý bố cục CardLayout đang hoạt động. Các > JFrame sử dụng một BorderLayout để vị trí hai > JPanels , một ở trên khác. Bảng điều khiển trên cùng sử dụng FlowLayout để hiển thị nút “Chuyển đổi thẻ” kiểm soát thẻ nào hiển thị trong bảng điều khiển phía dưới. Bảng điều khiển phía dưới sử dụng thẻ > CardLayout để định vị hai > JPanels . Các > JPanel trên chương trình được xác định bởi > CardLayout (được thay đổi thành thẻ tiếp theo bằng cách nhấn vào nút “Switch Card”).

Bài viết đi kèm với ví dụ này là Sử dụng CardLayout. Để biết thêm thông tin về các trình quản lý bố cục khác, hãy xem Tổng quan về Trình quản lý bố cục .

> // Nhập khẩu được liệt kê đầy đủ để hiển thị những gì đang được sử dụng // chỉ có thể nhập javax.swing. * Và java.awt. * Etc .. import java.awt.EventQueue; import java.awt.BorderLayout; import java.awt.CardLayout; nhập khẩu java.awt.Color; import javax.swing.BorderFactory; import javax.swing.border.Border; nhập javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JComboBox; nhập javax.swing.JButton; nhập javax.swing.JLabel; import javax.swing.SwingConstants; nhập khẩu java.awt.Container; nhập khẩu java.awt.event.ActionListener; nhập khẩu java.awt.event.ActionEvent; lớp công khai CardLayoutExample {JFrame guiFrame; Thẻ CardLayout; Thẻ JPanelPanel; public static void main (String [] args) {// Sử dụng thread dispatch event cho các thành phần Swing EventQueue.invokeLater (new Runnable () {@Override public void run () {new CardLayoutExample ();}}); } public CardLayoutExample () {guiFrame = new JFrame (); // đảm bảo chương trình thoát khi khung đóng guiFrame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE); guiFrame.setTitle (“Ví dụ về CardLayout”); guiFrame.setSize (400,300); // Điều này sẽ căn giữa JFrame ở giữa màn hình guiFrame.setLocationRelativeTo (null); guiFrame.setLayout (new BorderLayout ()); // tạo đường viền để tô sáng vùng JPanel Border outline = BorderFactory.createLineBorder (Color.black); Các tab JPanelPanel = new JPanel (); tabsPanel.setBorder (phác thảo); JButton switchCards = new JButton (“Thẻ chuyển đổi”); switchCards.setActionCommand (“Thẻ chuyển đổi”); switchCards.addActionListener (new ActionListener () {@Override public void actionPerformed (sự kiện ActionEvent) {cards.next (cardPanel);}}); tabsPanel.add (switchCards); guiFrame.add (tabsPanel, BorderLayout.NORTH); cards = new CardLayout (); cardPanel = new JPanel (); cardPanel.setLayout (thẻ); cards.show (cardPanel, “Trái cây”); JPanel firstCard = new JPanel (); firstCard.setBackground (Color.GREEN); addButton (firstCard, “APPLES”); addButton (firstCard, “ORANGES”); addButton (firstCard, “BANANAS”); JPanel secondCard = new JPanel (); secondCard.setBackground (Color.BLUE); addButton (secondCard, “LEEKS”); addButton (secondCard, “TOMATOES”); addButton (secondCard, “PEAS”); cardPanel.add (firstCard, “Trái cây”); cardPanel.add (secondCard, “Veggies”); guiFrame.add (tabsPanel, BorderLayout.NORTH); guiFrame.add (cardPanel, BorderLayout.CENTER); guiFrame.setVisible (true); } // Tất cả các nút đều theo cùng một mẫu // để tạo tất cả các nút ở một nơi. private void addButton (Container parent, String name) {JButton nhưng = new JButton (tên); but.setActionCommand (tên); parent.add (nhưng); }}

> // Nhập khẩu được liệt kê đầy đủ để hiển thị những gì đang được sử dụng // chỉ có thể nhập javax.swing. * Và java.awt. * Etc .. import java.awt.EventQueue; import java.awt.BorderLayout; import java.awt.CardLayout; nhập khẩu java.awt.Color; import javax.swing.BorderFactory; import javax.swing.border.Border; nhập javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JComboBox; nhập javax.swing.JButton; nhập javax.swing.JLabel; import javax.swing.SwingConstants; nhập khẩu java.awt.Container; nhập khẩu java.awt.event.ActionListener; nhập khẩu java.awt.event.ActionEvent; lớp công khai CardLayoutExample {JFrame guiFrame; Thẻ CardLayout; Thẻ JPanelPanel; public static void main (String [] args) {// Sử dụng thread dispatch event cho các thành phần Swing EventQueue.invokeLater (new Runnable () {@Override public void run () {new CardLayoutExample ();}}); } public CardLayoutExample () {guiFrame = new JFrame (); // đảm bảo chương trình thoát khi khung đóng guiFrame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE); guiFrame.setTitle (“Ví dụ về CardLayout”); guiFrame.setSize (400,300); // Điều này sẽ căn giữa JFrame ở giữa màn hình guiFrame.setLocationRelativeTo (null); guiFrame.setLayout (new BorderLayout ()); // tạo đường viền để tô sáng vùng JPanel Border outline = BorderFactory.createLineBorder (Color.black); Các tab JPanelPanel = new JPanel (); tabsPanel.setBorder (phác thảo); JButton switchCards = new JButton (“Thẻ chuyển đổi”); switchCards.setActionCommand (“Thẻ chuyển đổi”); switchCards.addActionListener (new ActionListener () {@Override public void actionPerformed (sự kiện ActionEvent) {cards.next (cardPanel);}}); tabsPanel.add (switchCards); guiFrame.add (tabsPanel, BorderLayout.NORTH); cards = new CardLayout (); cardPanel = new JPanel (); cardPanel.setLayout (thẻ); cards.show (cardPanel, “Trái cây”); JPanel firstCard = new JPanel (); firstCard.setBackground (Color.GREEN); addButton (firstCard, “APPLES”); addButton (firstCard, “ORANGES”); addButton (firstCard, “BANANAS”); JPanel secondCard = new JPanel (); secondCard.setBackground (Color.BLUE); addButton (secondCard, “LEEKS”); addButton (secondCard, “TOMATOES”); addButton (secondCard, “PEAS”); cardPanel.add (firstCard, “Trái cây”); cardPanel.add (secondCard, “Veggies”); guiFrame.add (tabsPanel, BorderLayout.NORTH); guiFrame.add (cardPanel, BorderLayout.CENTER); guiFrame.setVisible (true); } // Tất cả các nút đều theo cùng một mẫu // để tạo tất cả các nút ở một nơi. private void addButton (Container parent, String name) {JButton nhưng = new JButton (tên); but.setActionCommand (tên); parent.add (nhưng); }}