0

Java と JFreeChart を使用するアプリに取り組んでいます。私のメインでは、タイマーを使用してクラスのウィンドウ/オブジェクトを閉じ、クラスの新しいオブジェクトとウィンドウを作成したいと考えています。JFreeChart の動的機能は、私が使用している API では機能しないようです。これが、グラフに動的な感触を与える唯一の方法です。

以下のコードは現在メイン用に持っているものですが、1 つのウィンドウを開いてから閉じ、1 分後に新しいウィンドウを開くだけです。明らかに、それがすべてである理由は明らかですが、タイマー内ですべてのオブジェクトを作成および削除するようにするための良い方法を考えることができないようです。

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

}
4

1 に答える 1

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

ご覧のとおり、timer.schedule()には、すぐに開始する 3 つのパラメーターがある場合があります。

于 2013-03-06T19:56:41.277 に答える