Question: ** This is the Client Side of my server/client socket program. ** I need help coding the send button, that will send messages to the
** This is the Client Side of my server/client socket program.
** I need help coding the send button, that will send messages to the server and display them in the text area of the GUI using "output.append("Client: UserInput"); The send button action performed is below in bold, and where the Client will input the message is right above it.
** this program is created on Netbeans IDE 8 using Java
Below is the code for my GUI
import java.net.*; import java.io.*;
public class KnockKnockClient extends javax.swing.JFrame {
/** * Creates new form KnockKnockClient */ public KnockKnockClient() { initComponents(); }
/** * This method is called from within the constructor to initialize the form. * WARNING: Do NOT modify this code. The content of this method is always * regenerated by the Form Editor. */ @SuppressWarnings("unchecked") // private void initComponents() {
jLabel1 = new javax.swing.JLabel(); jLabel2 = new javax.swing.JLabel(); serverName = new javax.swing.JTextField(); port = new javax.swing.JTextField(); jButton1 = new javax.swing.JButton(); jScrollPane1 = new javax.swing.JScrollPane(); output = new javax.swing.JTextArea(); jLabel3 = new javax.swing.JLabel(); messageSNT = new javax.swing.JTextField(); sendBtn = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
jLabel1.setText("Server:");
jLabel2.setText("port#:");
serverName.setText("localhost");
port.setText("5520");
jButton1.setText("Connect"); jButton1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton1ActionPerformed(evt); } });
output.setEditable(false); output.setColumns(20); output.setRows(5); jScrollPane1.setViewportView(output);
jLabel3.setText("Message to server:");
messageSNT.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { messageSNTActionPerformed(evt); } });
sendBtn.setText("Send"); sendBtn.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { sendBtnActionPerformed(evt); } });
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false) .addComponent(jScrollPane1) .addGroup(layout.createSequentialGroup() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addComponent(jLabel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jLabel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addGap(18, 18, 18) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addComponent(port, javax.swing.GroupLayout.DEFAULT_SIZE, 106, Short.MAX_VALUE) .addComponent(serverName, javax.swing.GroupLayout.PREFERRED_SIZE, 1, Short.MAX_VALUE)) .addGap(58, 58, 58) .addComponent(jButton1)) .addComponent(jLabel3, javax.swing.GroupLayout.Alignment.LEADING) .addComponent(messageSNT)) .addComponent(sendBtn)) .addContainerGap(63, Short.MAX_VALUE)) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addGap(33, 33, 33) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel1) .addComponent(serverName, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel2) .addComponent(port, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jButton1)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 54, Short.MAX_VALUE) .addComponent(jLabel3) .addGap(27, 27, 27) .addComponent(sendBtn) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(messageSNT, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 127, javax.swing.GroupLayout.PREFERRED_SIZE)) );
pack(); }//
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
try { Socket mySocket = new Socket(serverName.getText(), Integer.parseInt(port.getText())); //System.out.println(mysocket.getPort());
output.append("Connected to Server "); }
private void messageSNTActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: }
private void sendBtnActionPerformed(java.awt.event.ActionEvent evt) { /*
Code the Send button (sendButtonActionPerformed() method): If for some reasons you got disconnected, you wont be able to send messages to the server. Therefore, you must deal with the exception. Display the message you sent in the text area in the following format: Client: , write the message to the socket (printwriterObj.println() method), and wait for the servers response // (bufferedreaderObj.readLine() method.)
*/ } catch (IOException e) { output.append("Connection errors "); } } /** * @param args the command line arguments */ public static void main(String args[]) { /* Set the Nimbus look and feel */ // /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel. * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html */ try { for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) { if ("Nimbus".equals(info.getName())) { javax.swing.UIManager.setLookAndFeel(info.getClassName()); break; } } } catch (ClassNotFoundException ex) { java.util.logging.Logger.getLogger(KnockKnockClient.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); } catch (InstantiationException ex) { java.util.logging.Logger.getLogger(KnockKnockClient.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); } catch (IllegalAccessException ex) { java.util.logging.Logger.getLogger(KnockKnockClient.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); } catch (javax.swing.UnsupportedLookAndFeelException ex) { java.util.logging.Logger.getLogger(KnockKnockClient.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); } //
/* Create and display the form */ java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new KnockKnockClient().setVisible(true); } }); }
// Variables declaration - do not modify private javax.swing.JButton jButton1; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel3; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JTextField messageSNT; private javax.swing.JTextArea output; private javax.swing.JTextField port; private javax.swing.JButton sendBtn; private javax.swing.JTextField serverName; // End of variables declaration }
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
