【问题标题】:How to redirect printstream to JTextArea?如何将打印流重定向到 JTextArea?
【发布时间】:2013-12-15 21:58:44
【问题描述】:

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

谢谢!

【问题讨论】:

  • 上面的代码有问题吗?它与JTextArea 的问题有关吗?或者您只是不知道如何在JTextArea 中设置文本?
  • 是的,我不知道在这种情况下如何将输出发送到 JTextArea。我确实尝试过 res.append(""+c) 但它完全失败了。请帮助@peeskillet
  • 看看我的回答。您应该使用append 方法来生成连续的文本行

标签: java swing io system jtextarea


【解决方案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 吗?
【解决方案2】:

如果您只想将文本发送到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.valueOf(c)res.append(String.valueOf(c));
猜你喜欢
  • 1970-01-01
  • 2018-08-15
  • 1970-01-01
  • 2011-11-01
  • 1970-01-01
  • 2013-11-14
  • 1970-01-01
  • 2012-01-03
  • 2011-05-05
相关资源
最近更新 更多