Melaksanakan Butang Belakang/Hadapan dalam Ayunan Menggunakan CardLayout
Masalah:
Dalam Ayunan, pengguna sedang mencari cara yang mudah untuk melaksanakan butang hadapan dan belakang untuk menavigasi antara bahagian GUI yang berbeza. Percubaan untuk melaksanakan ini menggunakan sistem tindanan tidak berjaya, dan ia terbuka kepada penyelesaian alternatif.
Jawapan:
Daripada menggunakan sistem tindanan , pertimbangkan untuk menggunakan CardLayout. Pengurus susun atur ini membenarkan anda bertukar antara panel yang berbeza dengan arahan mudah, menjadikannya ideal untuk mencipta sistem navigasi ke hadapan/belakang.
Penyelesaian:
Kod berikut coretan mempamerkan cara untuk melaksanakan butang hadapan dan belakang menggunakan CardLayout:
import java.awt.BorderLayout; import java.awt.CardLayout; import java.awt.Color; import java.awt.Dimension; import java.awt.EventQueue; import java.awt.event.ActionEvent; import java.util.Random; import javax.swing.AbstractAction; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; public class CardPanel extends JPanel { private static final Random random = new Random(); private static final JPanel cards = new JPanel(new CardLayout()); private final String name; public CardPanel(String name) { this.name = name; this.setPreferredSize(new Dimension(320, 240)); this.setBackground(new Color(random.nextInt())); this.add(new JLabel(name)); } @Override public String toString() { return name; } public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { @Override public void run() { create(); } }); } private static void create() { JFrame f = new JFrame(); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); for (int i = 1; i < 9; i++) { CardPanel p = new CardPanel("Panel " + String.valueOf(i)); cards.add(p, p.toString()); } JPanel control = new JPanel(); control.add(new JButton(new AbstractAction("\u22b2Prev") { @Override public void actionPerformed(ActionEvent e) { CardLayout cl = (CardLayout) cards.getLayout(); cl.previous(cards); } })); control.add(new JButton(new AbstractAction("Next\u22b3") { @Override public void actionPerformed(ActionEvent e) { CardLayout cl = (CardLayout) cards.getLayout(); cl.next(cards); } })); f.add(cards, BorderLayout.CENTER); f.add(control, BorderLayout.SOUTH); f.pack(); f.setLocationRelativeTo(null); f.setVisible(true); } }
Penyelesaian yang dipertingkat ini menawarkan yang lebih bersih dan pendekatan yang lebih fleksibel untuk melaksanakan butang hadapan/belakang dalam aplikasi Swing anda.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melaksanakan Butang Belakang dan Hadapan dalam GUI Swing Menggunakan CardLayout?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!