console.html
来自「java类库详细讲解」· HTML 代码 · 共 168 行
HTML
168 行
<HTML>
<HEAD>
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<TITLE>Implementing a Console Window Using a JTextArea Component
(Java Developers Almanac Example)
</TITLE>
<META CONTENT="Patrick Chan" NAME="AUTHOR">
<META CONTENT="Code Examples from The Java Developers Almanac 1.4" NAME="DESCRIPTION">
<META CONTENT="Addison-Wesley/Patrick Chan" NAME="OWNER">
<META CONTENT="3/20/02" NAME="revision">
<STYLE TYPE="text/css">
<!-- CODE {font-family: Courier, Monospace; font-size: 12pt} PRE {font-family: Courier, Monospace; font-size: 11pt} BODY {font-size: 10pt} -->
</STYLE>
</HEAD>
<BODY>
<TR>
<TD></TD>
</TR>
<TABLE CELLSPACING="0" CELLPADDING="0" BORDER="0">
<TR>
<TD><A HREF="/?l=ex"><IMG BORDER="0" ALIGN="BOTTOM" HSPACE="10" SRC="../almanac14a.jpg"></A></TD><TD VALIGN="MIDDLE">
<H1>The Java Developers Almanac 1.4</H1>
Order this book from <a href="/cgi-bin/scripts/redirect.pl?l=ex&url=http://www.amazon.com/exec/obidos/ASIN/0201752808/xeo">Amazon</a>.
</TD>
</TR>
</TABLE>
<HR>
<TABLE CELLSPACING="0" CELLPADDING="0" BORDER="0">
<TR>
<TD><FONT FACE="Verdana, Arial, Helvetica, sans-serif">
<DIV ALIGN="LEFT">
<FONT FACE="Verdana, Arial, Helvetica, sans-serif" SIZE="3"><A HREF="../../index.html">Home</A>
:
<A HREF="../index.html">List of Packages</A>
:
<B><A HREF="../javax.swing/pkg.html">javax.swing</A></B><font color="#666666" SIZE="-1">
[ examples]
</font></FONT>
</DIV>
<P></P>
<h3>
e751.
Implementing a Console Window Using a JTextArea Component</h3>
This example creates a console window using a JTextArea which shows
all output printed to System.out and System.err.
System.out and System.err are replaced with
piped io streams. Two reader threads are created that
retrieve the output from these piped io streams
and appends it to the JTextArea component.
<pre>
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.text.*;
public class Console extends JFrame {
PipedInputStream piOut;
PipedInputStream piErr;
PipedOutputStream poOut;
PipedOutputStream poErr;
JTextArea textArea = new JTextArea();
public Console() throws IOException {
// Set up System.out
piOut = new PipedInputStream();
poOut = new PipedOutputStream(piOut);
System.setOut(new PrintStream(poOut, true));
// Set up System.err
piErr = new PipedInputStream();
poErr = new PipedOutputStream(piErr);
System.setErr(new PrintStream(poErr, true));
// Add a scrolling text area
textArea.setEditable(false);
textArea.setRows(<font color="#0066ff"><i>20</i></font>);
textArea.setColumns(<font color="#0066ff"><i>50</i></font>);
getContentPane().add(new JScrollPane(textArea), BorderLayout.CENTER);
pack();
setVisible(true);
// Create reader threads
new ReaderThread(piOut).start();
new ReaderThread(piErr).start();
}
class ReaderThread extends Thread {
PipedInputStream pi;
ReaderThread(PipedInputStream pi) {
this.pi = pi;
}
public void run() {
final byte[] buf = new byte[1024];
try {
while (true) {
final int len = pi.read(buf);
if (len == -1) {
break;
}
SwingUtilities.invokeLater(new Runnable() {
public void run() {
textArea.append(new String(buf, 0, len));
// Make sure the last line is always visible
textArea.setCaretPosition(textArea.getDocument().getLength());
// Keep the text area down to a certain character size
int idealSize = <font color="#0066ff"><i>1000</i></font>;
int maxExcess = <font color="#0066ff"><i>500</i></font>;
int excess = textArea.getDocument().getLength() - idealSize;
if (excess >= maxExcess) {
textArea.replaceRange("", 0, excess);
}
}
});
}
} catch (IOException e) {
}
}
}
}
</pre>
The console window is created using
<pre>
try {
new Console();
} catch (IOException e) {
}
</pre>
<P></P>
<FONT FACE="Verdana, Arial, Helvetica, sans-serif" SIZE="0">
© 2002 Addison-Wesley.
</FONT></FONT></TD>
</TR>
</TABLE>
<br>
<hr>
<FORM method="get" action="/cgi-bin/search/find.pl">
<table width="100%">
<tr>
<b>Search</b>:
<INPUT size="40" name="words" type="text"><INPUT value="Search" name="submit" type="submit">
</tr>
<tr>
<font size="-1">
(e.g. "cache", "parse xml dom", "java.lang.String", "java.lang.String.substring", "String.substring", "substring")
</font>
</tr>
</table>
</FORM>
</BODY>
</HTML>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?