我用GUI做了一个java程序。现在,我想在GUI中添加组件在那里我可以通过Java GUI问题
System.out.println();
显示我想做的事情在我们显示输出相同的方式哪个组件,我可以在GUI上如何显示组件的添加内容。
我用GUI做了一个java程序。现在,我想在GUI中添加组件在那里我可以通过Java GUI问题
System.out.println();
显示我想做的事情在我们显示输出相同的方式哪个组件,我可以在GUI上如何显示组件的添加内容。
您可以定义打印到一个JTextArea一个PrintStream:
final JTextArea textArea = new JTextArea();
PrintStream printStream = new PrintStream(new OutputStream() {
@Override
public void write(final int b) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
textArea.append("" + (char)b);
textArea.setCaretPosition(textArea.getText().length());
}
});
}
});
System.setOut(printStream);
增加了'SwingUtilities.invokeLater()'。 – 2009-10-13 19:37:58
增加了'System.setOut()'。 – 2009-10-13 19:42:19
感谢@约翰。我也会在我的代码中使用它。 – tangens 2009-10-13 19:44:38
对于只有一条线路,您可以使用一个JLabel并将其文本设置属性。如何使用JLabel:http://www.leepoint.net/notes-java/GUI/components/10labels/jlabel.html
或者如果您需要打印多行,则可以使用JTextArea-box。
它也可以使用Java2D和Graphics对象在GUI面板上绘制/绘制文本ontop。
从技术上讲,是的,你可以使用JLabel,但为什么要使用JLabel来标记某些内容? – 2009-10-13 19:38:08
您可以使用JTextArea
并在每次打印内容时向其添加文本。请致电setEditable(false)
,以便它是只读的。将它添加到JScrollPane
因此它是可滚动的。
或者您可以使用JList
并将每行添加为单独的列表项。它不会进行文字换行,但是如果您显示类似于事件日志的内容,它会为此目的找到好的。
我不相信有什么方法可以改变System.out.println()的位置,所以如果你试图这么做的话,你可能会不幸运。这就是log4j等日志框架派上用场的地方,因为您可以配置日志消息的去向。 – Herms 2009-10-13 19:38:01
@Herms:http://java.sun.com/javase/6/docs/api/java/lang/System.html#setOut%28java.io.PrintStream%29 – 2009-10-13 19:43:34