如何将printstream重定向到JTextArea?

时间:2013-11-29 16:45:02

标签: java swing io system jtextarea

我正在编写模式生成器,这里是主要代码(模式和步骤的字符由JTextFields提供):

String chstrin=ch.getText();
char c=chstrin.charAt(0);
int n = Integer.parseInt(st.getText()) ;

for(int i = 0; i <= n; ++i)
{
    for(int k = 0; k < i*2-1; ++k)
        System.out.print(c);

    System.out.println();
}

如何通过名称“res”将输出重定向到JTextArea? 我在StackOverflow和网络上都读过关于System.setOut和PipedOutput但是无法理解单行代码。 谁能帮我吗?请使用JTextArea res作为输出。

谢谢!

2 个答案:

答案 0 :(得分:1)

如果JTextArea的名字是res;然后:

for(int i = 0; i <= n; ++i)
{
    for(int k = 0; k < i*2-1; ++k)
       res.setText(res.getText()+c);

    res.setText(res.getText()+"\n");
}

答案 1 :(得分:1)

如果您要做的只是将文本发送到JTextArea而不是控制台,只需执行此类操作

JTextArea res = new JTextArea();  

....

String chstrin=ch.getText();
char c=chstrin.charAt(0);
int n = Integer.parseInt(st.getText()) ;
for(int i = 0; i <= n; ++i)
{
    for(int k = 0; k < i*2-1; ++k) {
        res.append(String.valueOf(c));
    }
    res.append("\n");
}

append方法允许您向JTextArea添加连续文字。如果您使用setText()。它将重写文本区域。

还要考虑换行。您可能想要包装文本行。为此,请执行此操作

JTextArea res = new JTextArea(); 
res.setLineWrap(true);
res.setWrapStyleWord(true);