[英]Updating JPanel/JFrame not working
我有一個創建JFrame的類,需要在JFrame中顯示一個圖像。 圖像必須每隔幾秒旋轉一次。
我已經嘗試在JFrame和JPanel上使用repaint(),revalidate()和validate(),似乎沒有工作。 以下是我目前更新JFrame / JPanel的代碼。 此代碼將等待4秒,然后顯示第四個圖像,但我希望它每秒更新一個新圖像。
public void startSlideshow(){
int i = 0;
Long oldTime = System.currentTimeMillis();
do {
Long currentTime = System.currentTimeMillis();
if( currentTime - oldTime >= 1000 ) {
img = new JLabel(new ImageIcon("Albums/" + album + "/" + imageNames.get(i)));
panel.removeAll();
panel.setBackground(Color.BLACK);
panel.add(img);
panel.revalidate();
panel.repaint();
i++;
oldTime = System.currentTimeMillis(); // reset reference time
}
} while(i<imageNames.size());
panel.removeAll();
panel.setBackground(Color.BLACK);
panel.add(img);
panel.getRootPane().revalidate();
panel.repaint();
}
非常感謝任何幫助,因為我已經敲了一會兒。 謝謝。
您正在阻止事件調度線程,阻止它處理新的重繪請求。
而不是使用循環和Thread.sleep
,嘗試使用javax.swing.Timer
看看如何 在Swing中 使用Swing Timers和Concurrency
您可能還會發現更改JLabel
的圖標更簡單,而不是每次都通過...創建新的JLabel
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.