2017-09-14 14 views
-2

私はjavaclassに簡単なコードを書いています。Jtextfieldへの出力をsystem.out.printlnから表示する方法

public class JavaApplication1 { 

    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String[] args) { 
     // TODO code application logic here 
     System.out.println("hello"); 
    } 

} 

は私が...実行中のJTextFieldに「ハロー」の出力を表示する必要があるとして

答えて

1

最も簡単な方法はこれです..私はどのように行うのか分からない新鮮:まずセットアップ枠でそのテキストボックスに直接印刷します。

public static void main(String[] args) { 
    JFrame frame = new JFrame(); 

    JTextField field = new JTextField(); 
    frame.add(field); 

    frame.pack(); 
    frame.setVisible(true); 

    OutputStream out = new OutputStream() { 
     @Override 
     public void write(int b) throws IOException { 
     } 
    }; 

    class JTextFieldPrintStream extends PrintStream { 
     public JTextFieldPrintStream(OutputStream out) { 
      super(out); 
     } 
     @Override 
     public void println(String x) { 
      field.setText(x); 
     } 
    }; 
    JTextFieldPrintStream print = new JTextFieldPrintStream(out); 
    System.setOut(print); 

    System.out.println("hello"); 
} 
+0

おかげで、あなたのSystem.outを送信するためにSystem.setOut(OutputStreamを)使用した後、これを作成し、TextAreaOutputStreamを必要としています。それは働いている.. – user5809644

+0

ありがとう、しかし、ControlAltDelは正しいです:私はシステムの出力をリダイレクトする必要があります。私はこれに私の答えを調整しました。 – JensS

+0

新しいコード "System.out.println(" hello ");"表示されません。出力... jframeだけが表示されています... – user5809644

2

あなたは、例えば

import java.io.IOException;  
import java.io.OutputStream; 

import javax.swing.JTextArea; 

    /** 

    * TextAreaOutputStream creates an outputstream that will output to the 
    * given textarea. Useful in setting System.out 
    */ 

    public class TextAreaOutputStream extends OutputStream { 
     public static final int DEFAULT_BUFFER_SIZE = 1; 

     JTextArea mText; 
     byte mBuf[]; 
     int mLocation; 
     public TextAreaOutputStream(JTextArea component) { 
      this(component, DEFAULT_BUFFER_SIZE); 
     } 

     public TextAreaOutputStream(JTextArea component, int bufferSize) { 
      mText = component; 
      if (bufferSize < 1) bufferSize = 1; 
      mBuf = new byte[bufferSize]; 
      mLocation = 0; 
     } 

     @Override 
     public void write(int arg0) throws IOException { 
      //System.err.println("arg = " + (char) arg0); 
      mBuf[mLocation++] = (byte)arg0; 
      if (mLocation == mBuf.length) { 
       flush(); 
      } 
     } 

     public void flush() { 
      mText.append(new String(mBuf, 0, mLocation)); 
      mLocation = 0;   
     } 

    } 

は、テキストエリアにあなたの答えのための

関連する問題