www.pudn.com > jnp-src.rar > Chatboard.java
/*
* Java Network Programming, Second Edition
* Merlin Hughes, Michael Shoffner, Derek Hamner
* Manning Publications Company; ISBN 188477749X
*
* http://nitric.com/jnp/
*
* Copyright (c) 1997-1999 Merlin Hughes, Michael Shoffner, Derek Hamner;
* all rights reserved; see license.txt for details.
*/
import java.io.*;
import java.awt.*;
import java.awt.event.*;
public class Chatboard extends Panel implements Runnable, ActionListener {
protected TextArea output;
protected TextField input;
protected Queue queue;
protected Thread listener;
public Chatboard () {
setLayout (new BorderLayout ());
add ("Center", output = new TextArea ());
output.setEditable (false);
add ("South", input = new TextField ());
input.addActionListener (this);
queue = new Queue ();
listener = new Thread (this);
listener.start ();
}
public Dimension getPreferredSize () {
return new Dimension (200, 150);
}
protected MessageOutput messageOut;
public void setMessageOutput (MessageOutput messageOut) {
this.messageOut = messageOut;
}
public MessageOutput getMessageOutput () {
return new QueueOutputStream (queue);
}
public void actionPerformed (ActionEvent event) {
try {
messageOut.writeUTF (input.getText ());
messageOut.send ();
output.append (input.getText () + "\n");
input.setText ("");
} catch (IOException ignored) {
}
}
public void run () {
QueueInputStream queueIn = new QueueInputStream (queue);
try {
while (!Thread.interrupted ()) {
queueIn.receive ();
String msg = queueIn.readUTF ();
output.append ("-- " + msg + "\n");
}
} catch (IOException ignored) {
}
}
}