Rumah >Java >javaTutorial >Bagaimanakah Saya Boleh Melaksanakan Butang Belakang dan Hadapan dalam GUI Swing Menggunakan CardLayout?

Bagaimanakah Saya Boleh Melaksanakan Butang Belakang dan Hadapan dalam GUI Swing Menggunakan CardLayout?

DDD
DDDasal
2024-12-19 08:49:16799semak imbas

How Can I Implement Back and Forward Buttons in a Swing GUI Using CardLayout?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn