2013-01-06 21 views
-2

我是一名初學者,當我運行我的程序(即,當父jFrame出現時)時啓動一個計時器並在5秒後處置該幀。當計時器啓動時,我想開始填充虛擬進度條,並完全填充它,直到計時器熄滅。定時器配置jFrame並填充進度條

+7

這個心不是我們寫的代碼爲你的地方。這是一個你嘗試過某種東西並獲得幫助的地方,它不起作用。 – radai

+0

嘿,我試圖做到這一點,但有很多錯誤,然後我感到困惑。 – user1952590

+0

好吧,然後發佈你的最新嘗試 – radai

回答

5

這裏是你的代碼

import javax.swing.*; 
import java.awt.*; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.awt.event.WindowEvent; 
public class ClosingPanel extends JFrame{ 
private final Timer every50millis; 

public ClosingPanel() { 
    setTitle("this panel will self-destruct"); 
    setDefaultCloseOperation(DISPOSE_ON_CLOSE); 
    final JProgressBar progressBar = new JProgressBar(SwingConstants.HORIZONTAL, 0, 100); 
    add(progressBar); 
    pack(); 
    every50millis = new Timer(50, new ActionListener() { 
     private int count=0; 
     @Override 
     public void actionPerformed(ActionEvent e) { 
      count++; 
      progressBar.setValue(count); 
      if (count==100) { 
       shutdown(); 
      } 
     } 
    }); 
    every50millis.start(); 
} 

private void shutdown() { 
    System.err.println("shutting down"); 
    every50millis.stop(); 
    WindowEvent closingEvent = new WindowEvent(ClosingPanel.this, WindowEvent.WINDOW_CLOSING); 
    Toolkit.getDefaultToolkit().getSystemEventQueue().postEvent(closingEvent); 
} 

public static void main(String[] args) throws Exception { 
    SwingUtilities.invokeAndWait(new Runnable() { 
     @Override 
     public void run() { 
      ClosingPanel panel = new ClosingPanel(); 
      panel.setVisible(true); 
     } 
    }); 
} 

}

+0

我可以使用java.swing.timer而不是java.util.timer – user1952590

+0

你可以,你應該,那是什麼,上面的代碼使用。 – radai

+1

代碼用進度條更新 – radai