© 2014 Firstsoft Technologies (P) Limited. login
Hi 'Guest'
Home SiteMap Contact Us Disclaimer
enggedu
Quick Links
Easy Studies

Home Lab Exercise Network Lab Exercise Programs Java WindowChat Program▼


Java WindowChat Program:

import java.awt.*; import java.awt.event.*; import java.net.*; import java.io.*; public class WindowChat extends Frame implements ActionListener, Runnable { public void actionPerformed(ActionEvent event) { if ( event.getActionCommand().equals("Exit") ) System.exit(0); if ( event.getActionCommand().equals("Config") ) { ConfigDialog d = new ConfigDialog(this, hostname, portnum); d.show(); if ( d.getResult().equals("Connect!") ) { hostname = d.getHostName(); portnum = d.getPortNum(); try { if ( host != null ) { reader.destroy(); host.close(); } host = new Socket(hostname, portnum); sender = new PrintWriter(host.getOutputStream(), true); reader = new Thread(this); reader.start(); } catch (Exception err) { Dialog derr = new ErrorDialog(this, err); derr.show(); derr.dispose(); } } d.dispose(); } if ( event.getActionCommand().equals("Send!") ) try { sender.println(msg.getText()); msg.setText(""); } catch (Exception err) { Dialog derr = new ErrorDialog(this, err); derr.show(); derr.dispose(); } } public void run() { try { BufferedReader r = new BufferedReader(new InputStreamReader(host.getInputStream())); while (true) { String line = r.readLine(); history.add(hostname+":"+line); } } catch (Exception err) { Dialog derr = new ErrorDialog(this, err); derr.show(); derr.dispose(); } } public WindowChat() { addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e){ System.exit(0); } }); //---Window layout setSize(600,300); setBackground(new Color(225,225,225)); setLayout(new BorderLayout()); Panel p = new Panel(); p.add(new Label("Message:", Label.RIGHT)); p.add(msg); Button b = new Button("Send!"); b.addActionListener(this); p.add(b); add(p, "North"); add(history, "Center"); //---Configure Menu MenuBar mb = new MenuBar(); Menu m = new Menu("System"); MenuItem mi = new MenuItem("Config"); mi.addActionListener(this); m.add(mi); m.addSeparator(); mi = new MenuItem("Exit"); mi.addActionListener(this); m.add(mi); mb.add(m); setMenuBar(mb); } public static void main(String[] args) { WindowChat wc = new WindowChat(); wc.show(); } private TextField msg = new TextField(50); private List history = new List(); private Socket host; private String hostname; private int portnum; private Thread reader; private PrintWriter sender; } class ConfigDialog extends Dialog implements ActionListener { public ConfigDialog(Frame parent, String name, int port) { super(parent, "Config Window Chat", true); addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e){ result=""; setVisible(false);} }); hostname.setText(name); portnum.setText(String.valueOf(port)); setSize(200,200); setLayout(new GridLayout(3,2)); Panel p = new Panel(new FlowLayout(FlowLayout.RIGHT)); p.add(new Label("Host:", Label.RIGHT)); add(p); p = new Panel(); p.add(hostname); add(p); p = new Panel(new FlowLayout(FlowLayout.RIGHT)); p.add(new Label("Port:", Label.RIGHT)); add(p); p = new Panel(); p.add(portnum); add(p); p = new Panel(new FlowLayout(FlowLayout.CENTER)); Button b = new Button("Connect!"); b.addActionListener(this); p.add(b); add(p); p = new Panel(new FlowLayout(FlowLayout.CENTER)); b = new Button("Cancel"); b.addActionListener(this); p.add(b); add(p); } public void actionPerformed(ActionEvent event) { result = event.getActionCommand(); setVisible(false); } public String getHostName() { return hostname.getText(); } public int getPortNum() { Integer port = new Integer(portnum.getText()); return port.intValue(); } public String getResult() { return result; } private TextField hostname = new TextField(10); private TextField portnum = new TextField(5); private String result; }

SAMPLE INPUT OUTPUT:

 
SLogix Student Projects

⇓Student Projects⇓
⇑Student Projects⇑
bottom