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
Lepaskan: 2024-12-19 08:49:16
asal
738 orang telah melayarinya

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);
    }
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan