2010-11-23 14 views
2

JEditorPaneまたはJTextPaneにURLをロードしようとしていますが、そのURLは動的に生成されたPHPページです。私はその後、JavaアプリケーションのPHPページからの出力を処理したいと思います。 PHPページは、生成された文字列が正しく生成されているかどうかをチェックするために使用できるStringを少なくとも1つ出力します。JEditorPane/TextPaneドキュメントまたはページの読み込みが完了したかどうかを確認するにはどうすればよいですか?

私はストレート

JEditorPane.setPage(URL); 
if(outputTracker.getText().contains("desktop_process")) 

を使用してページを設定した後のページを試してみて、処理した場合、それは私がJEditorPaneのためのtext/plainのコンテンツタイプを指定した場合でも、空白のHTMLページを返します。

System.out.println(outputTracker.getText()); 

PHPページの読み込みが完了していないのは、以下のメソッドが正しい出力を返すためです。これは正常に動作します

private void getPageBtnActionPerformed(java.awt.event.ActionEvent evt) {           
    outputTracker.setPage("URL_GOES_HERE?variables=x&y=a"); 
    check_response_timer.start(); 
} 

ActionListener checkAction = new ActionListener() { 
    public void actionPerformed(ActionEvent evt) { 
     if(outputTracker.getText().contains("desktop_process")) { 
      System.out.println("Checking results..."); 
      check_response_timer.stop(); 
      process_response(); 
     } else { 
      num_checks++; 
      System.out.println("Checking results..."); 
      if(num_checks == 10) { 
       check_response_timer.stop(); 
       checkLater = true; 
       responseLbl.setText("Connection timeout. Please click reconnect to check again."); 
       num_checks = 0; 
      } 
     } 
    } 
}; 
private Timer check_response_timer = new Timer(200,checkAction); 

:私はページを設定して、スイングタイマーを起動し、ページが正しく生成された文字列が含まれている場合は、すべての200ミリ秒をチェックしてる瞬間

。 現在のサーバーが読み込まれ、PHPページの現在の複雑さがロードされると、ループは最初の反復の後に停止しますが、少し効率が悪いように見えます。ページが数秒間かかりますかどうかを確認する必要はありません。大量のサーバー負荷や複雑なPHPページでの負荷

ページの読み込みが完了したことを確認する方法があるかどうかは疑問です。

JEditorPane.read(inputStream)メソッドを使用するか、Swingバックグラウンドワーカースレッドでページを設定し、ワーカーのdone()が呼び出されたときにPHPページの出力を処理できるかどうかは疑問でした。

そしてeditorpaneはとにかく表示されていないと、エディタ・ペインを使用せずに、動的に生成される出力から直接文字列にそれを読んで、PHPの出力をロードする良い方法はありますか?

希望はこれで十分です。

ありがとうございました。

答えて

2

あなたはエディタペインにPropertyChangeListenerを追加することができます。メインページがロードされたとき

editorPane.addPropertyChangeListener("page", ...); 

しかし、これが唯一のことを教えてくれます。画像やその他の関連ファイルの読み込みが完了したときは、その旨を通知しません。

+0

OK。どうもありがとう。私はドキュメント上でdocumentChangeListenerを試しましたが、これは正しい結果を表示する前に数回戻されました。ドキュメントをページに変更しようとは思わなかった。私はそれを試してみましょう。読み込んでいるページは純粋なテキストなので、外部ファイルについて心配する必要はありません。おかげで – drent

+0

それは完全に働いた!ありがとう! – drent

+0

これが機能する場合は、回答を受け入れます。 –

関連する問題