java - CardLayout的卡片显示顺序是随机的吗?

标签 java swing user-interface layout-manager cardlayout

我想要在 CardLayout 中以随机顺序显示卡片或屏幕。我需要有关如何实现这一目标的指导。我应该使用什么策略?

我尝试使用下面的代码,但它的顺序是固定的。我希望能够选择我喜欢的顺序。

编辑!

抱歉,按随机顺序我并不是指洗牌。但是,很高兴知道。我希望程序的用户能够输入一些内容。根据输入的值,显示特定的屏幕/卡。

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;

public class CardLayoutExample extends JFrame {

private int currentCard = 1;
private JPanel cardPanel;
private CardLayout cl;

public CardLayoutExample() {

    setTitle("Card Layout Example");
    setSize(300, 150);
    cardPanel = new JPanel();

    cl = new CardLayout();
    cardPanel.setLayout(cl);
    JPanel p1 = new JPanel();
    JPanel p2 = new JPanel();
    JPanel p3 = new JPanel();
    JPanel p4 = new JPanel();
    JLabel lab1 = new JLabel("Card1");
    JLabel lab2 = new JLabel("Card2");
    JLabel lab3 = new JLabel("Card3");
    JLabel lab4 = new JLabel("Card4");
    p1.add(lab1);
    p2.add(lab2);
    p3.add(lab3);
    p4.add(lab4);

    cardPanel.add(p1, "1");
    cardPanel.add(p2, "2");
    cardPanel.add(p3, "3");
    cardPanel.add(p4, "4");
    JPanel buttonPanel = new JPanel();
    JButton b1 = new JButton("Previous");
    JButton b2 = new JButton("Next");
    buttonPanel.add(b1);
    buttonPanel.add(b2);
    b1.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent arg0) {
            if (currentCard > 1) {
                currentCard -= 1;
                cl.show(cardPanel, "" + (currentCard));
            }
        }
    });

    b2.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent arg0) {
            if (currentCard < 4) {
                currentCard += 1;
                cl.show(cardPanel, "" + (currentCard));
            }
        }
    });
    getContentPane().add(cardPanel, BorderLayout.NORTH);
    getContentPane().add(buttonPanel, BorderLayout.SOUTH);
}

public static void main(String[] args) {
    CardLayoutExample cl = new CardLayoutExample();
    cl.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    cl.setVisible(true);
}
}

最佳答案

将 CartLayout 放入列表中,随机排列列表,按列表顺序添加到包含布局。

关于java - CardLayout的卡片显示顺序是随机的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15283488/

相关文章:

java - 不幸的是 MyApp 已停止。我该如何解决这个问题?

java - mvn 执行 :java on aggregate pom

java - ImageIO.read(URL) 需要很长时间

ios - 有没有办法使用 SwiftUI 将可选对象绑定(bind)到 Toggle/Slider

c - 从 QT 运行 C 程序

java - 在删除数据行之前检查其他表中是否使用了外键 hibernate

java - 如何使用动态IP连接基于mysql web的数据库服务器

java - Swing:单击特定按钮时忽略文本框焦点丢失事件

java - 如何使用 keyTyped() 方法删除我的图 block 类?

javascript - Angular 2 - 属性指令语法错误..我错过了什么吗?