import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.io.IOException;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JTextArea;
import javax.swing.JTextField;
public class ClientGUI extends JFrame {
/**
*
*/
private static final long serialVersionUID = 2565422293410796014L;
private JTextArea messages;
private JTextField sendMessage;
private JButton sendButton;
protected Client client;
protected final String clientName = "b" + Math.random();
public ClientGUI() throws Exception {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
messages = new JTextArea();
sendMessage = new JTextField();
sendButton = new JButton("send");
client = new Client();
setLayout(new GridLayout(6,1));
messages.setEditable(false);
sendButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String msg = sendMessage.getText();
msg = preMessageSent(msg);
synchronized(client) {
try {
client.sendMessage(msg);
sendMessage.setText("");
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
});
add(messages);
add(sendMessage);
add(sendButton);
initGUI();
pack();
setVisible(true);
setSize(300, 700);
new Thread() {
public void run() {
while (true) {
synchronized(client) {
try {
String newMessage = client.getMessage();
if (newMessage == null)
newMessage = "";
newMessage = postMessageReceived(newMessage);
messages.setText(newMessage + messages.getText());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return;
}
}
}
}.start();
}
public String preMessageSent(String msg) {
return msg;
}
public String postMessageReceived(String newMessage) {
return newMessage;
}
public void initGUI() throws Exception {
}
/**
* @param args
*/
public static void main(String[] args) {
try {
new ClientGUI();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}