如何创建s.th.像在java中的函数输出流?

问题描述:

我想解决以下问题: 我有一个图形界面类JTextArea。而且我还在写我自己的课程,我们称之为Foo如何创建s.th.像在java中的函数输出流?

其实,我在GUI类中有所有的计算。他们只是使用s.th.像myText.append(...)写一些输出到GUI中。

现在我想把所有的计算都放到我的新类Foo中。 问题:如何创建一个方法,它将GUI中的JTextArea作为输入,然后像以前一样使用它来向其中写入一些输出文本。我不想将此作为方法的返回值!

这可能吗?

+4

问题尚不清楚。请显示一些代码。 – mtk 2013-02-26 08:20:50

+0

这是事件相关的,如果我的问题是正确的,你希望一旦你点击/按回车,当前图片将被保存(或文本) - 所以你需要有人来听输入/点击。 – Infested 2013-02-26 08:22:54

+1

@mtk:问题并不清楚。英语不是他的母语。 – 2013-02-26 08:28:59

事情是这样的......

public class Foo { 
    public void writeInfoToTextArea(JTextArea textArea /*, other parms here */) { 
     textArea.setText(...); 
    } 
} 
+0

这对我有用:) – gurehbgui 2013-02-26 08:30:31

你需要的是一个映射器或适配器,即东西,接受来自一个接口中的方法,并将它们转换成另一种接口的方法调用。在你的情况下,我建议使用Writer而不是OutputStream来避免所有的编码问题。试试这个代码:

public Foo extends Writer { 
    private JTextArea textArea; 

    public Foo(JTextArea textArea) { 
     this.textArea = textArea; 
    } 

    public void write(char cbuf[], int off, int len) throws IOException { 
     String text = new String(cbuff, off, len); 
     textArea.append(text); 
    } 

    public void close() { } 
    public void flush() { } 
} 

如果你真的需要一个OutputStream,看看OutputStreamWriter以字节和Unicode字符之间的转换。