2013-01-06 1 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.util.timer 대신 java.swing.timer를 사용할 수 있습니까? – user1952590

+0

위의 코드에서 사용할 수있는 것과 할 수있는 것이 있습니다. – radai

+1

코드가 진행률 표시 줄로 업데이트되었습니다. – radai

관련 문제