每分钟关闭并重新打开Java窗口

时间:2013-03-06 19:41:14

标签: java awt jfreechart

我正在开发一个使用Java和JFreeChart的应用程序。在我的主要内容中,我想使用一个计时器来关闭类的窗口/对象,并创建一个新的对象和类的窗口。 JFreeChart的动态功能似乎不适用于我正在使用的API,这是我能给图形带来动态感觉的唯一方法。

下面的代码是我目前主要的代码,但它所做的只是打开一个窗口然后关闭它并在一分钟后打开一个新窗口。显然,很明显为什么会发生这种情况,但我似乎无法想出一个好的方法来制作它以便在计时器内创建和删除所有对象。

  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); 
}

}

1 个答案:

答案 0 :(得分: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()可能有3个参数可立即启动。