【问题标题】:Show on a window (awt/swing) what I system.out.prinlt()在窗口(awt/swing)上显示我 system.out.printlt()
【发布时间】:2014-09-27 23:01:30
【问题描述】:

我有一个打印一些东西的 void 方法。 (swing)TextField 可以以某种方式填充我的打印内容吗?还是我应该使用不同的东西?

如果我的方法打印:

Hello
how
are
you?

我想在窗口上显示,正是这样。谢谢。

private class ButtonListener implements ActionListener
{
    @Override
    public void actionPerformed(ActionEvent e)
    {
        label.setText(instance.voidMethodThatPrints());
    }
}

它不起作用,因为 setText 需要一个字符串,所以我想问你是否有更快的方法让它工作。

【问题讨论】:

  • 您可以发布您已经尝试过的内容吗?您可以使用 TextFields setText() 方法来显示文本。
  • @I-LOVE-2-REVIVE 看代码,明显不行
  • 你能改变void方法返回一个String吗?我能想到的唯一另一件事是您可以更改 System.out 以使用自定义 PrintWriter ,如 Kayamans 回答。这是一个链接stackoverflow.com/questions/564913/…

标签: java eclipse swing awt


【解决方案1】:

textArea.append(text) 有什么问题?用适当的参数调用它并得到你需要的东西。

【讨论】:

  • textArea 也需要一个字符串,我说的是一个 void mathod。看上面的代码。
  • 对不起,@Matt 我不知道你想要什么。您想要一个将某些内容“打印”到 textarea 中的 void 方法吗?但是文本区域不是输出流。你可以(如果你愿意)实现PrintWriter,它实际上调用了textarea.append()。这里的问题是“为什么”
【解决方案2】:

您可以使用System.setOut(PrintWriter pw) 重定向标准输出。但是,您必须编写一些额外的逻辑以使其进入文本区域(因为没有 setOut(JTextArea jt) 方法)。

编辑:不建议您使用这种方法。在您的情况下,正确的方法是重新设计您的代码,例如 cmets 中 I-LOVE-2-REVIVE 所建议的。

【讨论】:

    猜你喜欢
    • 2013-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-18
    相关资源
    最近更新 更多