>Java >java지도 시간 >CardLayout을 사용하여 Swing GUI에서 뒤로 및 앞으로 버튼을 어떻게 구현할 수 있습니까?

CardLayout을 사용하여 Swing GUI에서 뒤로 및 앞으로 버튼을 어떻게 구현할 수 있습니까?

DDD
DDD원래의
2024-12-19 08:49:16740검색

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

CardLayout을 사용하여 Swing에서 뒤로/앞으로 버튼 구현

문제:

Swing에서, 사용자는 여러 섹션 사이를 탐색하기 위해 앞으로 및 뒤로 버튼을 구현하는 편리한 방법을 찾고 있습니다. GUI. 스택 시스템을 사용하여 이를 구현하려는 시도는 성공하지 못했으며 대체 솔루션을 모색하고 있습니다.

답변:

스택 시스템을 사용하는 대신 , CardLayout 사용을 고려해보세요. 이 레이아웃 관리자를 사용하면 간단한 명령으로 여러 패널 사이를 전환할 수 있으므로 앞으로/뒤로 탐색 시스템을 만드는 데 이상적입니다.

해결책:

다음 코드 스니펫은 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);
    }
}

이 향상된 솔루션은 구현을 위한 더 깨끗하고 유연한 접근 방식을 제공합니다. Swing 애플리케이션의 앞으로/뒤로 버튼.

위 내용은 CardLayout을 사용하여 Swing GUI에서 뒤로 및 앞으로 버튼을 어떻게 구현할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.