Advertisement
evgeniyosipov

JLChatv1.0.java

Dec 27th, 2014
206
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 23.13 KB | None | 0 0
  1. import java.io.BufferedReader;
  2. import java.io.BufferedWriter;
  3. import java.io.IOException;
  4. import java.io.InputStreamReader;
  5. import java.io.OutputStreamWriter;
  6. import java.net.ServerSocket;
  7. import java.net.Socket;
  8. import java.net.UnknownHostException;
  9. import java.util.logging.Level;
  10. import java.util.logging.Logger;
  11. import javax.swing.JOptionPane;
  12.  
  13. /**
  14.  *
  15.  * @author Evgeniy Osipov http://fastandclever.ru/
  16.  * @version 1.0
  17.  */
  18. public class JLChat extends javax.swing.JFrame {
  19.  
  20.     /**
  21.      * Creates new form JLChat
  22.      */
  23.     public JLChat() {
  24.         initComponents();
  25.     }
  26.  
  27.     /**
  28.      * This method is called from within the constructor to initialize the form.
  29.      * WARNING: Do NOT modify this code. The content of this method is always
  30.      * regenerated by the Form Editor.
  31.      */
  32.     @SuppressWarnings("unchecked")
  33.     // <editor-fold defaultstate="collapsed" desc="Generated Code">
  34.     private void initComponents() {
  35.  
  36.         buttonGroup1 = new javax.swing.ButtonGroup();
  37.         jTextField1 = new javax.swing.JTextField();
  38.         jLabel1 = new javax.swing.JLabel();
  39.         jTextField2 = new javax.swing.JTextField();
  40.         jLabel2 = new javax.swing.JLabel();
  41.         jTextField3 = new javax.swing.JTextField();
  42.         jLabel3 = new javax.swing.JLabel();
  43.         jScrollPane1 = new javax.swing.JScrollPane();
  44.         jTextArea1 = new javax.swing.JTextArea();
  45.         jButton3 = new javax.swing.JButton();
  46.         jScrollPane2 = new javax.swing.JScrollPane();
  47.         jTextArea2 = new javax.swing.JTextArea();
  48.         jScrollPane3 = new javax.swing.JScrollPane();
  49.         jTextArea3 = new javax.swing.JTextArea();
  50.         jRadioButton1 = new javax.swing.JRadioButton();
  51.         jRadioButton2 = new javax.swing.JRadioButton();
  52.         jLabel4 = new javax.swing.JLabel();
  53.         jButton1 = new javax.swing.JButton();
  54.         jButton2 = new javax.swing.JButton();
  55.         jMenuBar1 = new javax.swing.JMenuBar();
  56.         jMenu1 = new javax.swing.JMenu();
  57.         jMenuItem1 = new javax.swing.JMenuItem();
  58.         jMenu2 = new javax.swing.JMenu();
  59.         jMenuItem3 = new javax.swing.JMenuItem();
  60.  
  61.         setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
  62.         setTitle("JLChat");
  63.  
  64.         jTextField1.setText("admin");
  65.  
  66.         jLabel1.setFont(new java.awt.Font("SansSerif", 0, 10)); // NOI18N
  67.         jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
  68.         jLabel1.setText("Ваше Имя");
  69.  
  70.         jTextField2.setText("localhost");
  71.  
  72.         jLabel2.setFont(new java.awt.Font("SansSerif", 0, 10)); // NOI18N
  73.         jLabel2.setText("IP Сервера");
  74.  
  75.         jTextField3.setText("1777");
  76.  
  77.         jLabel3.setFont(new java.awt.Font("SansSerif", 0, 10)); // NOI18N
  78.         jLabel3.setText("Порт Сервера");
  79.  
  80.         jTextArea1.setEditable(false);
  81.         jTextArea1.setColumns(20);
  82.         jTextArea1.setLineWrap(true);
  83.         jTextArea1.setRows(5);
  84.         jTextArea1.setWrapStyleWord(true);
  85.         jTextArea1.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
  86.         jScrollPane1.setViewportView(jTextArea1);
  87.  
  88.         jButton3.setText("Отправить");
  89.         jButton3.setToolTipText("");
  90.         jButton3.setEnabled(false);
  91.         jButton3.addActionListener(new java.awt.event.ActionListener() {
  92.             public void actionPerformed(java.awt.event.ActionEvent evt) {
  93.                 jButton3ActionPerformed(evt);
  94.             }
  95.         });
  96.  
  97.         jTextArea2.setColumns(20);
  98.         jTextArea2.setFont(new java.awt.Font("Serif", 0, 12)); // NOI18N
  99.         jTextArea2.setLineWrap(true);
  100.         jTextArea2.setRows(5);
  101.         jTextArea2.setWrapStyleWord(true);
  102.         jTextArea2.setEnabled(false);
  103.         jScrollPane2.setViewportView(jTextArea2);
  104.  
  105.         jTextArea3.setEditable(false);
  106.         jTextArea3.setColumns(20);
  107.         jTextArea3.setFont(new java.awt.Font("SansSerif", 0, 12)); // NOI18N
  108.         jTextArea3.setLineWrap(true);
  109.         jTextArea3.setRows(5);
  110.         jTextArea3.setText("Инструкция:\n\n1) Создаём сервер (можно сразу нажать кнопку \"Cоединить\")\n\n2) Присоединяемся к серверу (только один клиент может подключиться к серверу):\n\nа) Ввести в поле \"IP Сервера\" адрес хоста (например, 192.168.0.111)\nб) Ввести в поле \"Порт Сервера\" порт хоста\nв) Нажать кнопку \"Cоединить\"\n\n3) Чатимся =)\n\n4) Разъединять коннект нужно с двух сторон и потом повторить шаги 1-3 для восстановления соединения.\n\nПриятной беседы!");
  111.         jTextArea3.setWrapStyleWord(true);
  112.         jScrollPane3.setViewportView(jTextArea3);
  113.  
  114.         buttonGroup1.add(jRadioButton1);
  115.         jRadioButton1.setFont(new java.awt.Font("SansSerif", 0, 12)); // NOI18N
  116.         jRadioButton1.setSelected(true);
  117.         jRadioButton1.setText("Сервер");
  118.  
  119.         buttonGroup1.add(jRadioButton2);
  120.         jRadioButton2.setFont(new java.awt.Font("SansSerif", 0, 12)); // NOI18N
  121.         jRadioButton2.setText("Клиент");
  122.  
  123.         jLabel4.setFont(new java.awt.Font("SansSerif", 0, 10)); // NOI18N
  124.         jLabel4.setText("Соединить как");
  125.  
  126.         jButton1.setText("Соединить");
  127.         jButton1.addActionListener(new java.awt.event.ActionListener() {
  128.             public void actionPerformed(java.awt.event.ActionEvent evt) {
  129.                 jButton1ActionPerformed(evt);
  130.             }
  131.         });
  132.  
  133.         jButton2.setText("Разьединить");
  134.         jButton2.setEnabled(false);
  135.         jButton2.addActionListener(new java.awt.event.ActionListener() {
  136.             public void actionPerformed(java.awt.event.ActionEvent evt) {
  137.                 jButton2ActionPerformed(evt);
  138.             }
  139.         });
  140.  
  141.         jMenu1.setText("Файл");
  142.  
  143.         jMenuItem1.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F4, java.awt.event.InputEvent.ALT_MASK));
  144.         jMenuItem1.setText("Выход");
  145.         jMenuItem1.addActionListener(new java.awt.event.ActionListener() {
  146.             public void actionPerformed(java.awt.event.ActionEvent evt) {
  147.                 jMenuItem1ActionPerformed(evt);
  148.             }
  149.         });
  150.         jMenu1.add(jMenuItem1);
  151.  
  152.         jMenuBar1.add(jMenu1);
  153.  
  154.         jMenu2.setText("Информация");
  155.  
  156.         jMenuItem3.setText("Об авторе");
  157.         jMenuItem3.addActionListener(new java.awt.event.ActionListener() {
  158.             public void actionPerformed(java.awt.event.ActionEvent evt) {
  159.                 jMenuItem3ActionPerformed(evt);
  160.             }
  161.         });
  162.         jMenu2.add(jMenuItem3);
  163.  
  164.         jMenuBar1.add(jMenu2);
  165.  
  166.         setJMenuBar(jMenuBar1);
  167.  
  168.         javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
  169.         getContentPane().setLayout(layout);
  170.         layout.setHorizontalGroup(
  171.             layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  172.             .addGroup(layout.createSequentialGroup()
  173.                 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
  174.                     .addGroup(layout.createSequentialGroup()
  175.                         .addGap(4, 4, 4)
  176.                         .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
  177.                             .addComponent(jLabel2)
  178.                             .addComponent(jLabel3)
  179.                             .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 62, javax.swing.GroupLayout.PREFERRED_SIZE)
  180.                             .addComponent(jLabel4))
  181.                         .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  182.                             .addGroup(layout.createSequentialGroup()
  183.                                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  184.                                 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
  185.                                     .addComponent(jTextField2, javax.swing.GroupLayout.Alignment.LEADING)
  186.                                     .addComponent(jTextField1, javax.swing.GroupLayout.Alignment.LEADING)
  187.                                     .addComponent(jTextField3, javax.swing.GroupLayout.PREFERRED_SIZE, 200, javax.swing.GroupLayout.PREFERRED_SIZE)))
  188.                             .addGroup(layout.createSequentialGroup()
  189.                                 .addGap(37, 37, 37)
  190.                                 .addComponent(jRadioButton1)
  191.                                 .addGap(18, 18, 18)
  192.                                 .addComponent(jRadioButton2))))
  193.                     .addComponent(jScrollPane3, javax.swing.GroupLayout.PREFERRED_SIZE, 281, javax.swing.GroupLayout.PREFERRED_SIZE)
  194.                     .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
  195.                         .addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 130, javax.swing.GroupLayout.PREFERRED_SIZE)
  196.                         .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
  197.                         .addComponent(jButton2, javax.swing.GroupLayout.PREFERRED_SIZE, 130, javax.swing.GroupLayout.PREFERRED_SIZE)))
  198.                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  199.                 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  200.                     .addGroup(layout.createSequentialGroup()
  201.                         .addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 447, Short.MAX_VALUE)
  202.                         .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  203.                         .addComponent(jButton3, javax.swing.GroupLayout.PREFERRED_SIZE, 101, javax.swing.GroupLayout.PREFERRED_SIZE))
  204.                     .addComponent(jScrollPane1)))
  205.         );
  206.         layout.setVerticalGroup(
  207.             layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  208.             .addGroup(layout.createSequentialGroup()
  209.                 .addContainerGap()
  210.                 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  211.                     .addGroup(layout.createSequentialGroup()
  212.                         .addComponent(jScrollPane1)
  213.                         .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  214.                         .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  215.                             .addComponent(jButton3, javax.swing.GroupLayout.PREFERRED_SIZE, 35, javax.swing.GroupLayout.PREFERRED_SIZE)
  216.                             .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
  217.                     .addGroup(layout.createSequentialGroup()
  218.                         .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
  219.                             .addComponent(jTextField1)
  220.                             .addComponent(jLabel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
  221.                         .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  222.                         .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
  223.                             .addComponent(jTextField2)
  224.                             .addComponent(jLabel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
  225.                         .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  226.                         .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
  227.                             .addComponent(jTextField3)
  228.                             .addComponent(jLabel3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
  229.                         .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  230.                         .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
  231.                             .addComponent(jRadioButton2)
  232.                             .addComponent(jLabel4, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
  233.                             .addComponent(jRadioButton1))
  234.                         .addGap(6, 6, 6)
  235.                         .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
  236.                             .addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 33, javax.swing.GroupLayout.PREFERRED_SIZE)
  237.                             .addComponent(jButton2, javax.swing.GroupLayout.PREFERRED_SIZE, 33, javax.swing.GroupLayout.PREFERRED_SIZE))
  238.                         .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  239.                         .addComponent(jScrollPane3, javax.swing.GroupLayout.DEFAULT_SIZE, 255, Short.MAX_VALUE)))
  240.                 .addContainerGap())
  241.         );
  242.  
  243.         pack();
  244.     }// </editor-fold>
  245.  
  246.     private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                        
  247.         jButton1.setEnabled(false);
  248.         jButton2.setEnabled(true);
  249.  
  250.         jRadioButton1.setEnabled(false);
  251.         jRadioButton2.setEnabled(false);
  252.  
  253.         jTextField1.setEnabled(false);
  254.         jTextField2.setEnabled(false);
  255.         jTextField3.setEnabled(false);
  256.  
  257.         userName = jTextField1.getText();
  258.         serverIP = jTextField2.getText();
  259.         serverPort = Integer.parseInt(jTextField3.getText());
  260.  
  261.         begin = true;
  262.         connect = false;
  263.  
  264.     }                                        
  265.  
  266.     private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                        
  267.         jButton1.setEnabled(true);
  268.         jButton2.setEnabled(false);
  269.         jButton3.setEnabled(false);
  270.  
  271.         jRadioButton1.setEnabled(true);
  272.         jRadioButton2.setEnabled(true);
  273.  
  274.         jTextField1.setEnabled(true);
  275.         jTextField2.setEnabled(true);
  276.         jTextField3.setEnabled(true);
  277.  
  278.         jTextArea2.setEnabled(false);
  279.  
  280.         begin = false;
  281.         connect = false;
  282.  
  283.         if (jRadioButton1.isSelected()) {
  284.             try {
  285.                 if (br != null && bw != null) {
  286.                     br.close();
  287.                     bw.flush();
  288.                     bw.close();
  289.                 }
  290.                 if (socket != null) {
  291.                     socket.close();
  292.                 }
  293.  
  294.                 serverSocket.close();
  295.  
  296.                 br = null;
  297.                 bw = null;
  298.                 socket = null;
  299.                 serverSocket = null;
  300.             } catch (IOException ex) {
  301.                 Logger.getLogger(JLChat.class.getName()).log(Level.SEVERE, null, ex);
  302.             }
  303.         } else {
  304.             try {
  305.                 if (br != null && bw != null) {
  306.                     br.close();
  307.                     bw.flush();
  308.                     bw.close();
  309.                 }
  310.                 if (socket != null) {
  311.                     socket.close();
  312.                 }
  313.  
  314.                 br = null;
  315.                 bw = null;
  316.                 socket = null;
  317.             } catch (IOException ex) {
  318.                 Logger.getLogger(JLChat.class.getName()).log(Level.SEVERE, null, ex);
  319.             }
  320.  
  321.         }
  322.     }                                        
  323.  
  324.     private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {                                        
  325.         s = jTextArea2.getText();
  326.         sendMessageMethod(s);
  327.     }                                        
  328.  
  329.     private void jMenuItem3ActionPerformed(java.awt.event.ActionEvent evt) {                                          
  330.         JOptionPane.showConfirmDialog(
  331.                 null,
  332.                 "Евгений Осипов, 2012 год. \n"
  333.                 + "osipoveg1990@gmail.com, www.fastandclever.ru",
  334.                 "Об Авторе", JOptionPane.PLAIN_MESSAGE,
  335.                 JOptionPane.PLAIN_MESSAGE);
  336.     }                                          
  337.  
  338.     private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {
  339.         System.exit(0);
  340.     }
  341.  
  342.     private synchronized void startServerSockets() {
  343.         try {
  344.             serverSocket = new ServerSocket(serverPort);
  345.             socket = serverSocket.accept();
  346.  
  347.             begin = false;
  348.             connect = true;
  349.  
  350.             br = new BufferedReader(new InputStreamReader(socket.getInputStream(), "UTF-8"));
  351.             bw = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream(), "UTF-8"));
  352.  
  353.             jTextArea2.setEnabled(true);
  354.             jButton3.setEnabled(true);
  355.  
  356.         } catch (IOException ex) {
  357.             Logger.getLogger(JLChat.class.getName()).log(Level.SEVERE, null, ex);
  358.         }
  359.     }
  360.  
  361.     private synchronized void startClientSockets() {
  362.         try {
  363.             socket = new Socket(serverIP, serverPort);
  364.  
  365.             begin = false;
  366.             connect = true;
  367.  
  368.             br = new BufferedReader(new InputStreamReader(socket.getInputStream(), "UTF-8"));
  369.             bw = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream(), "UTF-8"));
  370.  
  371.             jTextArea2.setEnabled(true);
  372.             jButton3.setEnabled(true);
  373.  
  374.         } catch (UnknownHostException ex) {
  375.             Logger.getLogger(JLChat.class.getName()).log(Level.SEVERE, null, ex);
  376.         } catch (IOException ex) {
  377.             Logger.getLogger(JLChat.class.getName()).log(Level.SEVERE, null, ex);
  378.         }
  379.     }
  380.  
  381.     private synchronized void sendMessageMethod(String s1) {
  382.         sendMessage.append(userName).append(": ").append(s1).append("\n");
  383.     }
  384.  
  385.     private synchronized void chatMessageMethod(String s2) {
  386.         chatMessage.append(s2).append("\n");
  387.     }
  388.  
  389.     private synchronized void sendMessageSafe() {
  390.         try {
  391.             bw.write(sendMessage.toString());
  392.             bw.flush();
  393.             this.jTextArea1.append(sendMessage.toString());
  394.             sendMessage.setLength(0);
  395.             jTextArea2.setText("");
  396.  
  397.         } catch (IOException ex) {
  398.             Logger.getLogger(JLChat.class.getName()).log(Level.SEVERE, null, ex);
  399.         }
  400.  
  401.     }
  402.  
  403.     private synchronized void chatMessageSafe() {
  404.         try {
  405.             s = br.readLine();
  406.         } catch (IOException ex) {
  407.             Logger.getLogger(JLChat.class.getName()).log(Level.SEVERE, null, ex);
  408.         }
  409.         chatMessageMethod(s);
  410.         jTextArea1.append(chatMessage.toString());
  411.         chatMessage.setLength(0);
  412.     }
  413.  
  414.     /**
  415.      * @param args the command line arguments
  416.      */
  417.     public static void main(String args[]) {
  418.         /* Set the Nimbus look and feel */
  419.         //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
  420.         /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
  421.          * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
  422.          */
  423.         try {
  424.             for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
  425.                 if ("Nimbus".equals(info.getName())) {
  426.                     javax.swing.UIManager.setLookAndFeel(info.getClassName());
  427.                     break;
  428.                 }
  429.             }
  430.         } catch (ClassNotFoundException ex) {
  431.             java.util.logging.Logger.getLogger(JLChat.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
  432.         } catch (InstantiationException ex) {
  433.             java.util.logging.Logger.getLogger(JLChat.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
  434.         } catch (IllegalAccessException ex) {
  435.             java.util.logging.Logger.getLogger(JLChat.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
  436.         } catch (javax.swing.UnsupportedLookAndFeelException ex) {
  437.             java.util.logging.Logger.getLogger(JLChat.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
  438.         }
  439.         //</editor-fold>
  440.  
  441.         /* Create and display the form */
  442.         JLChat jlch = new JLChat();
  443.         jlch.setVisible(true);
  444.  
  445.         while (true) {
  446.             try {
  447.                 Thread.sleep(100);
  448.             } catch (InterruptedException ex) {
  449.                 Logger.getLogger(JLChat.class.getName()).log(Level.SEVERE, null, ex);
  450.             }
  451.  
  452.             if (jlch.begin) {
  453.  
  454.                 if (jlch.jRadioButton1.isSelected()) {
  455.                     jlch.startServerSockets();
  456.  
  457.                 } else if (jlch.jRadioButton2.isSelected()) {
  458.                     jlch.startClientSockets();
  459.  
  460.                 }
  461.             }
  462.  
  463.             if (jlch.connect) {
  464.                 try {
  465.                     if (jlch.sendMessage.length() != 0) {
  466.                         jlch.sendMessageSafe();
  467.                     }
  468.  
  469.                     if (jlch.br.ready()) {
  470.                         jlch.chatMessageSafe();
  471.                     }
  472.  
  473.                 } catch (IOException ex) {
  474.                     Logger.getLogger(JLChat.class.getName()).log(Level.SEVERE, null, ex);
  475.                 }
  476.             }
  477.  
  478.         }
  479.  
  480.     }
  481.     // Объявления собственных полей  
  482.     private String serverIP;
  483.     private int serverPort;
  484.     private ServerSocket serverSocket;
  485.     private Socket socket;
  486.     private String userName;
  487.     private String s;
  488.     private StringBuffer sendMessage = new StringBuffer("");
  489.     public  StringBuffer chatMessage = new StringBuffer("");
  490.     private BufferedWriter bw;
  491.     private BufferedReader br;
  492.     private boolean begin;
  493.     private boolean connect;
  494.     // Конец объявления собственных полей
  495.     // Variables declaration - do not modify
  496.     private javax.swing.ButtonGroup buttonGroup1;
  497.     private javax.swing.JButton jButton1;
  498.     private javax.swing.JButton jButton2;
  499.     private javax.swing.JButton jButton3;
  500.     private javax.swing.JLabel jLabel1;
  501.     private javax.swing.JLabel jLabel2;
  502.     private javax.swing.JLabel jLabel3;
  503.     private javax.swing.JLabel jLabel4;
  504.     private javax.swing.JMenu jMenu1;
  505.     private javax.swing.JMenu jMenu2;
  506.     private javax.swing.JMenuBar jMenuBar1;
  507.     private javax.swing.JMenuItem jMenuItem1;
  508.     private javax.swing.JMenuItem jMenuItem3;
  509.     private javax.swing.JRadioButton jRadioButton1;
  510.     private javax.swing.JRadioButton jRadioButton2;
  511.     private javax.swing.JScrollPane jScrollPane1;
  512.     private javax.swing.JScrollPane jScrollPane2;
  513.     private javax.swing.JScrollPane jScrollPane3;
  514.     private javax.swing.JTextArea jTextArea1;
  515.     private javax.swing.JTextArea jTextArea2;
  516.     private javax.swing.JTextArea jTextArea3;
  517.     private javax.swing.JTextField jTextField1;
  518.     private javax.swing.JTextField jTextField2;
  519.     private javax.swing.JTextField jTextField3;
  520.     // End of variables declaration
  521. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement