/* * Client * * Version 1.0 * * 20061011 * * Author: Jenny Nordgren */ /** * Client är en enkel chatklient som låter dig skicka och ta emot textmeddelande med andra kopplade till samma chatserver. En utöknining som klientens arkitektur passar väl för men som jag inte vill/hinner implementera är att kunna skriva t ex /disconnect i textraden för att koppla från servern, och ex. /connect atlas.dsv.su.se 9494 för att koppla upp till en ny server. Förutom parsandet av inputsträngar för att se om de är kommandon eller inte samt felhantering av detta så vore det busenkelt att implementera. :) * */ import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.net.*; import java.io.*; public class Client extends JFrame implements ActionListener { private JTextField inputField = new JTextField(30); private JTextArea chatArea = new JTextArea(); private ConnectionHandler ch; private JButton sendButton = new JButton("Send"); /** * Konstruktorn tar server och port och skapar ett nytt chattfönster och försöker koppla upp till servern. Om det misslyckas skrivs felmeddelande ut i chatfönstret. */ public Client(String host, int port) { Container con = getContentPane(); con.setLayout(new BorderLayout()); this.setTitle("Chat Client"); sendButton.addActionListener(this); sendButton.setEnabled(false); inputField.addActionListener(this); inputField.setEditable(true); chatArea.setEditable(false); JScrollPane scroller = new JScrollPane(chatArea); //scroller.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER); JPanel inputPanel = new JPanel(new FlowLayout(FlowLayout.LEFT)); inputPanel.add(inputField); inputPanel.add(sendButton); con.add(inputPanel, BorderLayout.SOUTH); con.add(scroller, BorderLayout.CENTER); setDefaultCloseOperation(EXIT_ON_CLOSE); setSize(500, 600); setVisible(true); ch = new ConnectionHandler(host, port, this); } /** * Klicka på knappen Send eller return tar texten i inputField och skickar till servern * * */ public void actionPerformed(ActionEvent e) { String message = inputField.getText(); ch.sendChatMessage(message); chatArea.setCaretPosition(chatArea.getText().length()); inputField.setText(""); } /** * updateChatArea anropas för att lägga till text i chatArea. * */ public void updateChatArea(String s) { chatArea.append(s + "\n"); } /** * setInputEnabled ändrar send-knappens tillgänglighet. */ public void setInputEnabled(Boolean b) { sendButton.setEnabled(b); } /** * Mainmetoden läser in argument och skapar ett nytt chattfönster */ public static void main(String args[]) { String host = "127.0.0.1"; int port = 2000; switch(args.length) { case 1: host = args[0]; break; case 2: try { host = args[0]; port = Integer.parseInt(args[1]); } catch (NumberFormatException nfe) { } break; default: break; } Client chatwindow = new Client(host, port); } }