java中的等待和交换卡
我有一个JFrame,带有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"); 但是,第
卡片布局
和两张卡片。
我希望第一张卡片显示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秒钟,问题还是出在你没有给我们看的代码上——请发一个大的道歉,这是一个小的拼写错误。谢谢你的帮助!