2013-03-06 95 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个参数,立即开始。