在Frame中显示我的打印线

时间:2015-04-17 13:30:00

标签: java jframe jtextarea

我正在写一个垄断游戏。在某些时候的游戏中我打印“你的余额是1500”或“你砍了12”的东西。我想使用textarea将这些打印的东西转移到我的框架中。我创建了文本区域,我可以在我的应用程序中看到它。但是,如何在该文本区域中查看我的控制台?提前谢谢。

public class Monopoly {
    public Monopoly() {
        JFrame frame = new JFrame("Monopoly");
        Game g = new Game();
        Board b = new Board(g);
        frame.setSize(1368, 750);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().add(b);
        JTextArea textArea = new JTextArea();
        textArea.setBounds(700, 0, 6, 200);
        b.add(textArea);
        frame.setVisible(true);
    }
}

2 个答案:

答案 0 :(得分:2)

试试这个:

private void updateTextArea(final String text) {
    SwingUtilities.invokeLater(new Runnable() {
      public void run() {
        textArea.append(text);
      }
    });
  }

  private void redirectSystemStreams() {
    OutputStream out = new OutputStream() {
      @Override
      public void write(int b) throws IOException {
        updateTextArea(String.valueOf((char) b));
      }

      @Override
      public void write(byte[] b, int off, int len) throws IOException {
        updateTextArea(new String(b, off, len));
      }

      @Override
      public void write(byte[] b) throws IOException {
        write(b, 0, b.length);
      }
    };

    System.setOut(new PrintStream(out, true));
    System.setErr(new PrintStream(out, true));
  }

Source

答案 1 :(得分:1)

您可以在类中创建textArea私有实例字段,并在构造函数中初始化它:

private JTextArea textArea;

public Monopoly() {
    // ...
    textArea = new JTextArea();
    // ...
}

然后,无论何时需要显示内容,而不是通过System.out打印到控制台,请改用JTextArea的append方法。

textArea.append("Your balance is 1500\n");