Advertisement
donut188

Client GUI

Dec 8th, 2013
172
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.40 KB | None | 0 0
  1. import javax.swing.*;
  2. import java.awt.*;
  3. import java.awt.event.*;
  4.  
  5. public class GUIForClient extends JFrame implements ActionListener
  6. {
  7.     private JLabel label, label2;
  8.     private JTextField jtfMessage, jtfServer, jtfPort;
  9.     private JButton connect, exit;
  10.     private JTextArea jtaSouth;
  11.     private boolean isConnected;
  12.     private Client client;
  13.     private int initialPort;
  14.     private String initialHost;
  15.  
  16.     /**
  17.      * Constructor for objects of class GUIForClient
  18.      */
  19.     public GUIForClient(String host, int port)
  20.     {
  21.         super("Messaging Client");
  22.         initialHost = host;
  23.         initialPort = port;        
  24.         JPanel north = new JPanel(new GridLayout(3,1));
  25.         JPanel serverPortPanel = new JPanel(new GridLayout(1,5,1,3));
  26.         jtfServer = new JTextField(host);
  27.         jtfPort = new JTextField(port);
  28.         jtfPort.setHorizontalAlignment(SwingConstants.RIGHT);
  29.                
  30.         serverPortPanel.add(new JLabel("Name or IP Address of server: "));
  31.         serverPortPanel.add(jtfServer);
  32.         serverPortPanel.add(new JLabel("Connection on port: "));
  33.         serverPortPanel.add(jtfPort);
  34.        
  35.         north.add(serverPortPanel);
  36.  
  37.         label = new JLabel("Please enter your name below.", SwingConstants.CENTER);
  38.         north.add(label);
  39.         jtfMessage = new JTextField();
  40.         north.add(jtfMessage);
  41.         add(north, BorderLayout.NORTH);
  42.  
  43.         jtaSouth = new JTextArea("Welcome!\n", 60, 50);
  44.         JPanel center = new JPanel(new GridLayout(1,1));
  45.         center.add(new JScrollPane(jtaSouth));
  46.         jtaSouth.setEditable(false);
  47.         add(center, BorderLayout.CENTER);
  48.  
  49.         connect = new JButton("Connect");
  50.         connect.addActionListener(this);
  51.         exit = new JButton("Exit");
  52.         exit.addActionListener(this);
  53.         JPanel south = new JPanel();
  54.         south.add(connect);
  55.         south.add(exit);
  56.         add(south, BorderLayout.SOUTH);
  57.  
  58.         setDefaultCloseOperation(EXIT_ON_CLOSE);
  59.         setSize(1200, 600);
  60.         setVisible(true);
  61.         jtfMessage.requestFocus();
  62.     }
  63.  
  64.     public void appendStuff(String str)
  65.     {
  66.         jtaSouth.append(str);
  67.         jtaSouth.setCaretPosition(jtaSouth.getText().length() - 1);
  68.     }
  69.  
  70.     public void ifConnectionFails()
  71.     {
  72.         connect.setEnabled(true);
  73.         exit.setEnabled(true);
  74.         label.setText("Please enter your name below.");
  75.         jtfMessage.setText(" ");
  76.         jtfServer.setText("" + initialHost);
  77.         jtfPort.setText("" + initialPort);
  78.  
  79.         jtfPort.setEditable(true);
  80.         jtfServer.setEditable(true);
  81.        
  82.         jtfMessage.removeActionListener(this);
  83.         isConnected = false;
  84.     }
  85.  
  86.     public void actionPerformed(ActionEvent ae)
  87.     {
  88.         Object obj = ae.getSource();
  89.  
  90.         if(obj == exit)
  91.         {
  92.             client.sendMessage(new messageType(messageType.EXIT, ""));
  93.             return;
  94.         }
  95.  
  96.         if(isConnected)
  97.         {
  98.             client.sendMessage(new messageType(messageType.MESSAGE, jtfMessage.getText()));
  99.             jtfMessage.setText("");
  100.             return;
  101.         }
  102.  
  103.         if(obj == connect)
  104.         {
  105.             String username = jtfMessage.getText().trim();
  106.  
  107.             if(username.length() == 0)
  108.             {
  109.                 return;
  110.             }
  111.  
  112.             String serverName = jtfServer.getText().trim();
  113.             if(serverName.length() == 0)
  114.             {
  115.                 return;
  116.             }
  117.  
  118.             String portNumber = jtfPort.getText().trim();
  119.             if(portNumber.length() == 0)
  120.             {
  121.                 return;
  122.             }
  123.  
  124.             int port = 0;
  125.             try
  126.             {
  127.                 port = Integer.parseInt(portNumber);
  128.             }
  129.             catch(Exception e)
  130.             {
  131.             }
  132.  
  133.             client = new Client(serverName, port, username, this);
  134.  
  135.             if(!client.start())
  136.             {
  137.                 return;
  138.             }
  139.  
  140.             jtfMessage.setText("");
  141.             label.setText("Type your message below.");
  142.             isConnected = true;
  143.  
  144.             connect.setEnabled(false);
  145.  
  146.             jtfServer.setEditable(false);
  147.             jtfPort.setEditable(false);
  148.  
  149.             jtfMessage.addActionListener(this);
  150.         }
  151.     }
  152.  
  153.     public static void main(String[] args)
  154.     {
  155.         new GUIForClient("localhost", 7257);
  156.     }
  157. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement