如何将printstream重定向到JTextArea?

4

我正在编写一个模式生成器,以下是主要代码(模式和步骤的字符由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作为您的输出。 谢谢!

1
以上代码有问题吗?它和关于“JTextArea”的问题相关吗?还是你不知道如何在“JTextArea”中设置文本? - Paul Samsotha
是的,在这种情况下我不知道如何将输出发送到JTextArea。 我确实尝试了 res.append(“”+ c),但它完全失败了。 请帮忙 @peeskillet - Mayukh Nair
看一看我的回答。你应该使用“append”方法来生成连续的文本行。 - Paul Samsotha
2个回答

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");
}

非常抱歉耽搁了。现在开心了吗,@iShaalan? - Mayukh Nair

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);

无法识别 res.append(c);,显示 char 无法转换为 string。 - Mayukh Nair
使用String.valueOf(c)res.append(String.valueOf(c)); - Paul Samsotha

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接