簡體   English   中英

更新JPanel / JFrame不起作用

[英]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 TimersConcurrency

您可能還會發現更改JLabel的圖標更簡單,而不是每次都通過...創建新的JLabel

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM