2013-03-06 57 views
0

我正在使用Java和JFreeChart的應用程序。在我的主要內容中,我想使用計時器來關閉類的窗口/對象,並創建一個新的對象和類的窗口。 JFreeChart的動態功能似乎不適用於我正在使用的API,這是我給圖形提供動態感覺的唯一方法。每分鐘關閉並重新打開Java窗口

下面的代碼是我目前主要的代碼,但它所做的只是打開一個窗口,然後關閉它並在一分鐘後打開一個新窗口。顯然,這很清楚爲什麼會出現這種情況,但我似乎無法想出一個好方法來創建並刪除定時器中的所有對象。

public static void main(final String[] args) throws Exception { 
    Scanner in = new Scanner(System.in); 
    final String host = ""; 
    final String username = ""; 
    final String password = ""; 
    final String id = "testStream"; 

    final GraphStream demo = new GraphStream("Dia Example graph", host, username, password, id); 
    demo.pack(); 
    RefineryUtilities.centerFrameOnScreen(demo); 
    demo.setVisible(true); 
    new java.util.Timer().schedule( 
      new java.util.TimerTask() { 
       @Override 
       public void run() { 
        demo.setVisible(false); 
        demo.dispose(); 
        try { 
         final GraphStream demo2 =new GraphStream("Dia Example graph", host, username, password, id); 
         demo2.pack(); 
         RefineryUtilities.centerFrameOnScreen(demo2); 
         demo2.setVisible(true); 
        } catch (DataServiceException e) { 
         // TODO Auto-generated catch block 
         e.printStackTrace(); 
        } 
       } 
      }, 
      60000); 
} 

} 
+2

定期重新創建窗口似乎是一個糟糕的主意。在窗口中重新創建面板將是一個更有用的解決方案。另外,你問過關於JFreeChart api的問題嗎?看來你決定採取一種解決辦法,這會給你帶來另一個問題,而不是解決核心問題。 – unholysampler 2013-03-06 19:53:17

回答

0

我建議構造分成簡約的構造和刷新方法:

public static void main(final String[] args) throws Exception { 
    final String host = ""; 
    final String username = ""; 
    final String password = ""; 
    final String id = "testStream"; 
    final GraphStream demo = new GraphStream("Dia Example graph"); 
    new java.util.Timer().schedule( 
     new java.util.TimerTask() { 
     @Override 
     public void run() { 
      demo.refresh(host, username, password, id); 
      demo.pack(); 
      RefineryUtilities.centerFrameOnScreen(demo); 
      demo.setVisible(true); 
     } 
     }, 
     0, 60000); 
} 

As you can see timer.schedule() 5月有3個參數,立即開始。