2017-01-14 11 views
-2

私はwebdriverで私の自動テストのためのユーザーインターフェイスを構築しようとしています。コンソールからGUIのテキストボックス/レベルに行を印刷

私の質問どのようにラベルやテキストボックスにすべてのコンソール行を印刷できますか?

ボタンで設定方法:

public void AutologinTest(ActionEvent event){ 
    try { 
     Runtime rt = Runtime.getRuntime(); 
     Process pr = rt.exec("C:\\lottotest2\\workspace\\Lotteryscript\\Autologin.bat"); 
     BufferedReader input = new BufferedReader(
       new InputStreamReader(pr.getInputStream())); 
     String line = null; 
     while ((line = input.readLine()) != null) 
      System.out.println(line); 

    } catch (Exception e) { 
     System.out.println(e.toString()); 
     e.printStackTrace(); 
    } 
+2

あなたの質問を編集して、スクリーンショットを投稿するのではなく、コードを含めるようにしてください。 –

+2

あなたがしたいことは不明です。ユーザーインターフェイスを作成する場合は、I/O用のコンソールまたはI/O用のGUIを使用する必要がありますが、両方を使用する必要はありません。 – FredK

+0

コンソールに入れない場合は、 'System.out.println'(コンソールに何かを送る)を使わないでください。あなたが参照しているコントロールにテキストを追加するだけです。 'TextArea'はおそらく最も自然なものです。 –

答えて

0

あなたはSystem.setOut(のPrintStreamストリーム)を使用することができます。

PrintStream ps = new PrintStream(
    new OutputStream() { 
     public void write(int c){ 
      myLabel.setText(myLabel.getText() + (char) c); 
     } 
    } 
); 

System.setOut(ps); 

System.out.println("Hello!"); // will print on the label 
+0

これはコントロールにテキストを追加する非常にラウンドアバウトな方法ですなぜSystem.out.println(...)を使うのですか? –

0

あなたはTextAreaまたは他の制御にSTDOUTをリダイレクトするために、このような何かを行うことができます。

import javafx.application.Application; 
import javafx.scene.Scene; 
import javafx.scene.control.TextArea; 
import javafx.stage.Stage; 

import java.io.PrintStream; 

public class Main22 extends Application { 
    @Override 
    public void start(Stage primaryStage) throws Exception { 
     TextArea textArea = new TextArea(); 

     primaryStage.setScene(new Scene(textArea)); 
     primaryStage.show(); 

     System.setOut(new PrintStream(System.out) { 
      @Override 
      public void write(byte[] buf, int off, int len) { 
       super.write(buf, off, len); 

       String msg = new String(buf, off, len); 

       textArea.setText(textArea.getText() + msg); 
      } 
     }); 

     System.out.println("bla-bla-bla"); 
     System.out.println("Yet one line!"); 
    } 
} 

ご覧のとおり、writeメソッドはPrintStreamで、テキストの入力テキストメッセージはTextAreaに追加します。

screenshot of application

FYI:大きなテキストを処理しようとしたとき、それは非常に悪いパフォーマンスを持っているので、私は表示ログのTextAreaを使用することをお勧めしません。