我試圖更改當前卡片佈局中可見的幻燈片效果。但我在幻燈片的開頭看到一個輕彈,我無法調試/解決。我怎樣才能避免輕彈?更改卡片佈局中帶有滑動效果的卡片佈局中的當前卡片
下面是示例代碼重現錯誤:
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