java中的等待和交换卡

java中的等待和交换卡,java,swing,cardlayout,Java,Swing,Cardlayout,我有一个JFrame,带有卡片布局和两张卡片。 我希望第一张卡片显示5秒钟,然后切换到第二张 我使用了以下代码: CardLayout cards=new CardLayout(); panel.setLayout(cards); panel.add(first,"first"); panel.add(second,"second"); cards.show(panel,"first"); Thread.sleep(5000); cards.show(panel,"second"); 但是,第

我有一个JFrame,带有
卡片布局
和两张卡片。 我希望第一张卡片显示5秒钟,然后切换到第二张

我使用了以下代码:

CardLayout cards=new CardLayout();
panel.setLayout(cards);
panel.add(first,"first");
panel.add(second,"second");
cards.show(panel,"first");
Thread.sleep(5000);
cards.show(panel,"second");

但是,第二张卡直接显示。

Swing是单线程的。您正在通过调用
线程来阻止
EDT
。sleep
阻止第一张卡被绘制。设计用于与Swing组件交互。改用一个来调用计时器的
ActionListener

Timer timer = new Timer(5000, new ActionListener() {

    @Override
    public void actionPerformed(ActionEvent e) {
        cards.show(panel,"second");
    }
});
timer.setRepeats(false);
timer.start();

阅读:

Swing是单线程的。您正在通过调用
线程来阻止
EDT
。sleep
阻止第一张卡被绘制。设计用于与Swing组件交互。改用一个来调用计时器的
ActionListener

Timer timer = new Timer(5000, new ActionListener() {

    @Override
    public void actionPerformed(ActionEvent e) {
        cards.show(panel,"second");
    }
});
timer.setRepeats(false);
timer.start();

阅读:

非常感谢您的代码。但现在第二张牌再也没有出现。即使过了5秒钟,问题还是出在你没有给我们看的代码上——请发一个大的道歉,这是一个小的拼写错误。谢谢你的帮助!非常感谢你的代码。但现在第二张牌再也没有出现。即使过了5秒钟,问题还是出在你没有给我们看的代码上——请发一个大的道歉,这是一个小的拼写错误。谢谢你的帮助!