2016-03-23 22 views
0

私は自分のアプリケーションにTimerを持っています。タイマーは10秒ごとにデータベースの接続と切断を行います。これはちょうど私のdbがunreachebleであることを知ることです。多分他の方法があります。しかし、私はそうした。 アラートウィンドウを一度表示して、繰り返しトリップして正常に接続して戻すにはどうすればよいですか? ありがとうございました!ウィンドウをJavaで一度だけ表示する方法Timer

Timer timer = new Timer(); 
    timer.schedule(new TimerTask() { 
     public void run() { 
      Platform.runLater(new Runnable() { 
       public void run() { 
        SqlTransport.openConnectionToDB(); 
        System.out.println("connect"); 
        if (SqlTransport.openConnectionToDB() == false) { 
         alertWindow.display(); 
         caseCount.setVisible(false); 
         System.out.println("noConnection"); 
        }else { 
        System.out.println("connectDone"); 
        caseCount.setVisible(true); 
         caseCount.setText(String.valueOf(SqlTransport.getOpenedCount())); 
         pause.playFromStart(); 
         pause.setOnFinished(e -> { 
          SqlTransport.closeConnectionToDB(); 
          System.out.println("closeDone"); 
         }); 
        } 
       } 
      }); 
     } 
    }, 10000, 10000); 
+0

接続が成功したらどうしますか?タイマーを一時停止し、ダイアログでの応答を待っていますか?ダイアログが表示された後、あなたは何を期待していますか? –

+0

タイマーは何ですか:dbに接続します。それはそこにある価値を得る。ラベルを表示し、次に接続を閉じます。それは非常に速く接続を閉じて、接続が不十分なために私の別の方法が動作しない場合があるため、接続の間に一時停止します。私はすべての時間のためのダイアログを一度見る必要があります、データベースへの接続が成功するまで接続を確認してください –

答えて

0

接続は、それがチェックした最後の時間を働いていたかどうかを示すたあなたTimerTaskにブール型フィールドを追加します。タスクが実行されるたびにフィールドを適切に設定します。前回接続した場合のみウィンドウを表示します。

編集:ここにいくつかのコードがあります。

Timer timer = new Timer(); 
timer.schedule(new TimerTask() { 

    // It's possible that a starting value of false will 
    // match your desired behaviour better. 
    // Experiment with a situation where there is no connection initially. 
    boolean previouslyConnected = true; 

    public void run() { 
     Platform.runLater(new Runnable() { 
      public void run() { 
       SqlTransport.openConnectionToDB(); 
       System.out.println("connect"); 
       boolean connected = SqlTransport.openConnectionToDB(); 
       // ! means 'not'. This is typically written instead of 'connected == false' 
       if (!connected) { 
        if (previouslyConnected) { 
         alertWindow.display(); 
        } 
        caseCount.setVisible(false); 
        System.out.println("noConnection"); 
       } else { 
        System.out.println("connectDone"); 
        caseCount.setVisible(true); 
        caseCount.setText(String.valueOf(SqlTransport.getOpenedCount())); 
        pause.playFromStart(); 
        pause.setOnFinished(e -> { 
         SqlTransport.closeConnectionToDB(); 
         System.out.println("closeDone"); 
        }); 
       } 
       previouslyConnected = connected; 
      } 
     }); 
    } 
}, 10000, 10000); 
+0

残念ながら、私はそれを行う方法を本当に理解していません –

+0

OK、いくつかのコードを追加しました。 –

+0

ありがとう!しかし、私はalertWindowを10秒ごとに取得します。 –

関連する問題