我试图更改当前卡片布局中可见的幻灯片效果。但我在幻灯片的开头看到一个轻弹,我无法调试/解决。我怎样才能避免轻弹?更改卡片布局中带有滑动效果的卡片布局中的当前卡片
下面是示例代码重现错误:
import java.awt.CardLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class Main {
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel(new CardLayout());
JLabel label1 = new JLabel("Harry Joy");
panel.add(label1, "1");
JLabel label2 = new JLabel("Harsh Raval");
panel.add(label2, "2");
frame.add(panel);
frame.pack();
frame.setVisible(true);
for (int i = 0; i < 10; i++) {
try {
Thread.sleep(500L);
} catch (InterruptedException e) {
e.printStackTrace();
}
label2.setLocation(label1.getX() + 10 - label1.getWidth(), label1.getY());
label1.setLocation(label1.getX() + 10, label1.getY());
label2.setVisible(true);
}
label2.setVisible(false);
CardLayout cl = (CardLayout)panel.getLayout();
cl.next(panel);
}
}
在这里,在第一label1
( “哈里喜悦”)被显示。然后我制作label2
(“Harsh Raval”)可见,并尝试更改两者的位置以提供滑动效果。但是,这里发生的事情是第一次两个标签都显示在彼此的顶部,然后开始滑动。我怎么能阻止这个,我的意思是把两个标签放在一起?如果你运行一次,你可以更好地了解我的意思。
* “这里是SSCCE:” *嗯。没有。一个SSCCE需要一个格式良好的类和一个'main()'(除非是一个applet)。 – 2012-07-05 11:50:40
@AndrewThompson更新:) – 2012-07-05 11:51:43
这不是一个SSCCE,因为没有主要和没有进口。只有当EDT用完时,你的例子才“有效”,这是一个坏主意。 – 2012-07-05 11:52:20