title: Java - Check if a button is pressed via another class
body: <p>*A lot of the code regarding the GUI is generated by NetBeans.</p>
  
  <p>ClientGUI.java  </p>
  
  <pre><code>public class ClientGUI extends javax.swing.JFrame {
  
  String username;   
  
  
  /**
   * Creates new form NewJFrame
   */
  public ClientGUI() {
      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")
  // &lt;editor-fold defaultstate="collapsed" desc="Generated Code"&gt;                          
  private void initComponents() {
  
      jPanel1 = new javax.swing.JPanel();
      jLabel1 = new javax.swing.JLabel();
      usernameTxt = new javax.swing.JTextField();
      passwordTxt = new javax.swing.JTextField();
      loginBtn = new javax.swing.JButton();
      jLabel2 = new javax.swing.JLabel();
      jLabel3 = new javax.swing.JLabel();
      uploadBtn = new javax.swing.JButton();
      jLabel4 = new javax.swing.JLabel();
      downloadBtn = new javax.swing.JButton();
      logOffBtn = new javax.swing.JButton();
      portTxt = new javax.swing.JTextField();
      hostTxt = new javax.swing.JTextField();
      createFile = new javax.swing.JButton();
      fileNameTxt = new javax.swing.JTextField();
      connectionLbl = new javax.swing.JLabel();
      notifyLbl = new javax.swing.JLabel();
  
      setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
  
      jPanel1.setBackground(new java.awt.Color(0, 0, 51));
  
      jLabel1.setFont(new java.awt.Font("Tahoma", 0, 18)); // NOI18N
      jLabel1.setForeground(new java.awt.Color(255, 255, 255));
      jLabel1.setText("File Transfer System");
  
      usernameTxt.setText("Username");
  
      passwordTxt.setText("Password");
  
      loginBtn.setText("Login");
      loginBtn.addActionListener(new java.awt.event.ActionListener() {
          public void actionPerformed(java.awt.event.ActionEvent evt) {
              loginBtnActionPerformed(evt);
          }
      });
  
      jLabel2.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N
      jLabel2.setForeground(new java.awt.Color(255, 255, 255));
      jLabel2.setText("Login");
  
      jLabel3.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N
      jLabel3.setForeground(new java.awt.Color(255, 255, 255));
      jLabel3.setText("Upload");
  
      uploadBtn.setText("Upload");
      uploadBtn.addActionListener(new java.awt.event.ActionListener() {
          public void actionPerformed(java.awt.event.ActionEvent evt) {
              uploadBtnActionPerformed(evt);
          }
      });
  
      jLabel4.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N
      jLabel4.setForeground(new java.awt.Color(255, 255, 255));
      jLabel4.setText("Download");
  
      downloadBtn.setText("Search File");
  
      logOffBtn.setBackground(new java.awt.Color(153, 0, 0));
      logOffBtn.setForeground(new java.awt.Color(255, 255, 255));
      logOffBtn.setText("Log Off");
      logOffBtn.addActionListener(new java.awt.event.ActionListener() {
          public void actionPerformed(java.awt.event.ActionEvent evt) {
              logOffBtnActionPerformed(evt);
          }
      });
  
      portTxt.setText("7");
      portTxt.setToolTipText("Port");
  
      hostTxt.setText("localhost");
  
      createFile.setText("Create File");
      createFile.addActionListener(new java.awt.event.ActionListener() {
          public void actionPerformed(java.awt.event.ActionEvent evt) {
              createFileActionPerformed(evt);
          }
      });
  
      fileNameTxt.setText("File Name");
  
      connectionLbl.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N
      connectionLbl.setForeground(new java.awt.Color(255, 0, 0));
      connectionLbl.setText("Not Connected");
  
      notifyLbl.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
      notifyLbl.setForeground(java.awt.Color.green);
  
      javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
      jPanel1.setLayout(jPanel1Layout);
      jPanel1Layout.setHorizontalGroup(
          jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
          .addGroup(jPanel1Layout.createSequentialGroup()
              .addGap(21, 21, 21)
              .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                  .addComponent(connectionLbl)
                  .addComponent(hostTxt, javax.swing.GroupLayout.PREFERRED_SIZE, 82, javax.swing.GroupLayout.PREFERRED_SIZE)
                  .addGroup(jPanel1Layout.createSequentialGroup()
                      .addGap(152, 152, 152)
                      .addComponent(jLabel1))
                  .addGroup(jPanel1Layout.createSequentialGroup()
                      .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                          .addComponent(portTxt, javax.swing.GroupLayout.Alignment.LEADING)
                          .addComponent(jLabel2, javax.swing.GroupLayout.Alignment.LEADING)
                          .addComponent(usernameTxt, javax.swing.GroupLayout.Alignment.LEADING)
                          .addComponent(passwordTxt, javax.swing.GroupLayout.Alignment.LEADING)
                          .addComponent(loginBtn, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 82, Short.MAX_VALUE))
                      .addGap(101, 101, 101)
                      .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                          .addComponent(notifyLbl)
                          .addGroup(jPanel1Layout.createSequentialGroup()
                              .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                                  .addComponent(fileNameTxt, javax.swing.GroupLayout.Alignment.LEADING)
                                  .addComponent(jLabel3, javax.swing.GroupLayout.Alignment.LEADING)
                                  .addComponent(createFile, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                  .addComponent(uploadBtn, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                              .addGap(120, 120, 120)
                              .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                  .addComponent(downloadBtn)
                                  .addComponent(jLabel4)
                                  .addComponent(logOffBtn))))))
              .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
      );
      jPanel1Layout.setVerticalGroup(
          jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
          .addGroup(jPanel1Layout.createSequentialGroup()
              .addContainerGap()
              .addComponent(jLabel1)
              .addGap(26, 26, 26)
              .addComponent(connectionLbl)
              .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 68, Short.MAX_VALUE)
              .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                  .addComponent(jLabel2)
                  .addComponent(jLabel3)
                  .addComponent(jLabel4))
              .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
              .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                  .addComponent(usernameTxt, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                  .addComponent(downloadBtn)
                  .addComponent(createFile))
              .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
              .addComponent(passwordTxt, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
              .addGap(18, 18, 18)
              .addComponent(hostTxt, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
              .addGap(10, 10, 10)
              .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                  .addComponent(portTxt, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                  .addComponent(fileNameTxt, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
              .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
              .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                  .addComponent(loginBtn)
                  .addComponent(logOffBtn)
                  .addComponent(uploadBtn))
              .addGap(42, 42, 42)
              .addComponent(notifyLbl)
              .addGap(36, 36, 36))
      );
  
      javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
      getContentPane().setLayout(layout);
      layout.setHorizontalGroup(
          layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
          .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
      );
      layout.setVerticalGroup(
          layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
          .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
      );
  
      pack();
  }// &lt;/editor-fold&gt;                        
  
  public ClientGUI(ActionListener listener)
  {                
      uploadBtn.addActionListener(listener);
      add(uploadBtn);
  }
  private void loginBtnActionPerformed(java.awt.event.ActionEvent evt) {                                         
      try {
  
  
          String hostname = hostTxt.getText();
          String port = portTxt.getText();
          username = usernameTxt.getText();
          String password = passwordTxt.getText();
          ClientGUI client = new ClientGUI();
  
  
          Users usersClass = new Users();            
  
          if (hostname.length() == 0) // if user did not enter a name
          {
              hostname = "localhost";  //   use the default host name
          }
  
          if (port.length() == 0) // if user did not enter a name
          {
              port = "7";  //   use the default host name
          }
  
          Map&lt;String, String&gt; users;
          users = usersClass.getSet();
  
          if (users.containsKey(username) &amp;&amp; users.containsValue(password)) {
              JOptionPane.showMessageDialog(null, "Logged in Successfully. Welcome " + username);
              connectionLbl.setText("Connected");
              connectionLbl.setForeground(Color.green);
              hostTxt.setEditable(false);
              portTxt.setEditable(false);
              usernameTxt.setEditable(false);
              passwordTxt.setEditable(false);
              loginBtn.setEnabled(false);
  
              createUserFolder(username);
              new File("C:\\ServerFolder\\" + username).mkdirs();
          } else if (!users.containsKey(username) &amp;&amp; !users.containsValue(password)) {
              JOptionPane.showMessageDialog(null, "User does not exist.  Try again.");
          }
  
          ClientHelper helper
                  = new ClientHelper(hostname, port, username, password);
  
          boolean check = client.validateUsername(username);
          while (check) {
              String serverResponse = helper.sendMessageUsername(username);
              System.out.println(serverResponse);
              check = false;
          }
  
      } catch (SocketException ex) {
          Logger.getLogger(ClientGUI.class.getName()).log(Level.SEVERE, null, ex);
      } catch (UnknownHostException ex) {
          Logger.getLogger(ClientGUI.class.getName()).log(Level.SEVERE, null, ex);
      } catch (IOException ex) {
          Logger.getLogger(ClientGUI.class.getName()).log(Level.SEVERE, null, ex);
      }
  
  
  }                                        
  
  
  public File createUserFolder(String folderName) {
      File directory = new File("C:\\" + folderName);       
     // if the directory does not exist, create it
      if (!directory.exists()) {
          System.out.println("Creating Directory... ");
          boolean result = false;
  
          try {
              directory.mkdir();
              result = true;
          } catch (SecurityException se) {
              //handle it
          }
          if (result) {
              System.out.println("Directory Created");
          }
      }
  
      return directory;
  }
  
  private void logOffBtnActionPerformed(java.awt.event.ActionEvent evt) {                                          
  
      hostTxt.setEditable(true);
      portTxt.setEditable(true);
      usernameTxt.setEditable(true);
      passwordTxt.setEditable(true);
      loginBtn.setEnabled(true);
  
       connectionLbl.setText("Not Connected");
       connectionLbl.setForeground(Color.red);
  
  }                                         
  
  public void createFile(String fileName) {
      String sb = "TEST CONTENT";
      JFileChooser chooser = new JFileChooser();
      chooser.setCurrentDirectory(new File("C:\\" + fileName));
  
      int retrieval = chooser.showSaveDialog(null);
  
      if (retrieval == JFileChooser.APPROVE_OPTION) {
          try {
              FileWriter fw = new FileWriter(chooser.getSelectedFile() + ".txt");
              fw.write(sb.toString());
          } catch (Exception ex) {
              ex.printStackTrace();
          }
      }
  }
  
  
  private void createFileActionPerformed(java.awt.event.ActionEvent evt) {                                           
      // TODO add your handling code here:       
      createFile(username);
      notifyLbl.setText("File Created!");
  
      Timer timer = new Timer(5000, e -&gt; notifyLbl.setText(""));
      timer.setRepeats(false);
      timer.start();
  
  }                                          
  
  
  private void uploadBtnActionPerformed(java.awt.event.ActionEvent evt) {                                          
  
      try {
  
           ActionListener listener = new Server();
  
       ClientGUI g = new ClientGUI();
       g.uploadBtn.addActionListener(listener);  
  
  
          // TODO add your handling code here:
          String fileName = fileNameTxt.getText();
          String hostname = hostTxt.getText();
          String port = portTxt.getText();
          String username = usernameTxt.getText();
          String password = passwordTxt.getText();
  
          ClientHelper helper
                  = new ClientHelper(hostname, port, username, password);
  
          File file = new File("C:\\" + username + "\\" + fileName + ".txt");
          if (!file.exists()) {
              System.out.println("File not found!");
          } else {
  
              String myFile = helper.writeFileAndSend(fileName, username);
              System.out.println("Response:\n" + "File name: " + myFile + " User: " + username);
          }
      } catch (SocketException ex) {
          Logger.getLogger(ClientGUI.class.getName()).log(Level.SEVERE, null, ex);
      } catch (UnknownHostException ex) {
          Logger.getLogger(ClientGUI.class.getName()).log(Level.SEVERE, null, ex);
      } catch (IOException ex) {
          Logger.getLogger(ClientGUI.class.getName()).log(Level.SEVERE, null, ex);
      }
  }                                         
  
  public boolean validateUsername(String username) {
      username = username.trim();
  
      if (username == null || username.equals("")) {
          return false;
      }
  
      if (!username.matches("[a-zA-Z]*")) {
          return false;
      }
  
      return true;
  }
  
  
  /**
   * @param args the command line arguments
   */
  public static void main(String args[]) {
  
       ClientGUI g = new ClientGUI(new Server());
  
      /* Create and display the form */
      java.awt.EventQueue.invokeLater(new Runnable() {
          public void run() {
              new ClientGUI().setVisible(true);
          }
      });
  }
  
  // Variables declaration - do not modify                     
  private javax.swing.JLabel connectionLbl;
  private javax.swing.JButton createFile;
  private javax.swing.JButton downloadBtn;
  private javax.swing.JTextField fileNameTxt;
  private javax.swing.JTextField hostTxt;
  private javax.swing.JLabel jLabel1;
  private javax.swing.JLabel jLabel2;
  private javax.swing.JLabel jLabel3;
  private javax.swing.JLabel jLabel4;
  private javax.swing.JPanel jPanel1;
  private javax.swing.JButton logOffBtn;
  private javax.swing.JButton loginBtn;
  private javax.swing.JLabel notifyLbl;
  private javax.swing.JTextField passwordTxt;
  private javax.swing.JTextField portTxt;
  public javax.swing.JButton uploadBtn;
  private javax.swing.JTextField usernameTxt;
  // End of variables declaration                   
  </code></pre>
  
  <p>}</p>
  
  <p>Server.java</p>
  
  <pre><code>public class Server extends ClientGUI implements ActionListener {
  
  public static void main(String[] args) {
  
      ClientGUI client = new ClientGUI();
      client.createUserFolder("ServerFolder");      
  
      int serverPort = 7;    // default port
      if (args.length == 1) {
          serverPort = Integer.parseInt(args[0]);
      }
      try {
          // instantiates a datagram socket for both sending
          // and receiving data
          ServerDatagramSocket mySocket = new ServerDatagramSocket(serverPort);
          System.out.println("Server Ready...");          
  
          while (true) {  // forever loop
              //Login
              DatagramMessage request = mySocket.receiveMessageAndSender();
              System.out.println("201 - Request Received");
              String message = request.getMessage();
  
              System.out.println("204 - Login Successful - Welcome " + message);
              // Now send the echo to the requestor
              mySocket.sendMessage(request.getAddress(),
                      request.getPort(), message);                  
  
  
  
  
              //End Login
  
  
  
  
              //Upload
              System.out.println("\n304 - Upload Requested...");             
              byte[] receiveData = new byte[MAX_LEN];
              byte[] sendData = new byte[MAX_LEN];
              DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
              mySocket.receive(receivePacket);
  
              String sentence = new String(receivePacket.getData());
              SimpleDateFormat df = new SimpleDateFormat("EEE, MMM d, ''yy");
  
              File moddedFile = new File("C:\\ServerFolder\\");
  
              mySocket.sendMessage(request.getAddress(), request.getPort(), "Last upload on " + df.format(moddedFile.lastModified()));
              System.out.println("305 - Last upload on " + df.format(moddedFile.lastModified()));
              System.out.println("306 - Recieved Data: " + sentence);
  
              InetAddress IPAddress = receivePacket.getAddress();
              int port = receivePacket.getPort();
              String capitalizedSentence = sentence.toUpperCase();
              sendData = capitalizedSentence.getBytes();
              DatagramPacket sendPacket
                      = new DatagramPacket(sendData, sendData.length, IPAddress, port);
              mySocket.send(sendPacket);
  
              System.out.println("\n307 - File Recieved and ready for upload...");
              Writer writer = null;
  
              String todaysDate = df.format(new Date());
  
              writer = new BufferedWriter(new OutputStreamWriter(
                      new FileOutputStream("C:\\ServerFolder\\" + message.trim() + "\\" + todaysDate + ".txt"), "utf-8"));
              writer.write(sentence);
              System.out.println("308 - File upload complete!");
              JOptionPane.showMessageDialog(null, "File upload complete!");
              writer.close();
  
              //End Upload                            
          } //end while  
  
      } // end try       
      catch (Exception ex) {
          ex.printStackTrace();
      } // end catch     
  }//end main
  
  @Override
  public void actionPerformed(ActionEvent e) {               
      if((e.getActionCommand()).equals("Upload"))
          JOptionPane.showMessageDialog(null, "Button Pressed");
  }
  
  
   } // end class      
  </code></pre>
  
  <p>So as you can this is where I am at.  I am using NetBeans, NetBeans creates an actionPerformed method for me that listens when a button is clicked, which work perfect on the client side.  But I want to know how can I check that the button is pressed on the Client from the Server class. Another words, I want to do something on the server class when a button is clicked on the Client side, Client has a GUI created via NetBeans toolbox.  Any help appreciated.  Current code does not work.  Keep in mind that I have to run the server before I run the client, if that helps.</p>
  
  <p>EDIT:</p>
  
  <p>Here is everything.  The two classes I am having issues with.  Doing the way it is at the moment,uploadBtn is null, not sure why.  Constructor is called after the button has been initialised.</p>