Search code examples
javaactionlistenerjavax

Java - Add a listener for a button in another class via NetBeans


*A lot of the code regarding the GUI is generated by NetBeans.

The problem I am getting is on the client side, telling me that uploadBtn is null, nullPointException. Am pretty sure this is because it is not instantiated and am adding an actionListener in the constructor. I built the GUI via NetBeans, not really sure how to go about it.

What I want is when the uploadBtn is clicked, something to happen on the client and server side. Once the button is clicked, it does call the actionPerformed() NetBeans created for me on the client side, but not sure how to check if the button is pressed on the server side, and if so, it would call a method in the server. Any help appreciated. Am using sockets/datagram. College project.

ClientGUI.java

public class ClientGUI extends javax.swing.JFrame {

String username;

/**
 * Creates new form NewJFrame
 */
public ClientGUI() {
    initComponents();     
}

public ClientGUI(ActionListener listen)
{
    uploadBtn.addActionListener(listen);
}

/**
 * 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")
// <editor-fold defaultstate="collapsed" desc="Generated Code">                          
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();
    downloadFileNameTxt = new javax.swing.JTextField();

    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.setName("Upload"); // NOI18N
    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("Download");
    downloadBtn.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            downloadBtnActionPerformed(evt);
        }
    });

    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);

    downloadFileNameTxt.setText("File Name");

    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)
                .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(115, 115, 115)
                            .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                .addComponent(downloadFileNameTxt, javax.swing.GroupLayout.PREFERRED_SIZE, 85, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addComponent(jLabel4)
                                .addComponent(downloadBtn, javax.swing.GroupLayout.PREFERRED_SIZE, 85, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addComponent(logOffBtn)))))
                .addComponent(connectionLbl)
                .addComponent(hostTxt, javax.swing.GroupLayout.PREFERRED_SIZE, 82, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGroup(jPanel1Layout.createSequentialGroup()
                    .addGap(152, 152, 152)
                    .addComponent(jLabel1)))
            .addContainerGap(49, 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, 53, 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(createFile)
                .addComponent(downloadFileNameTxt, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
            .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addComponent(passwordTxt, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addComponent(downloadBtn))
            .addGap(30, 30, 30)
            .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(uploadBtn)
                .addComponent(logOffBtn))
            .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();
}// </editor-fold>                        

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<String, String> users;
        users = usersClass.getSet();

        if (users.containsKey(username) && 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) && !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;
}


public JButton getButton()
{
    return uploadBtn;
}

private void logOffBtnActionPerformed(java.awt.event.ActionEvent evt) {                                          

    //   try {
    String hostname = hostTxt.getText();
    String port = portTxt.getText();
    username = usernameTxt.getText();
    String password = passwordTxt.getText();
    hostTxt.setEditable(true);
    portTxt.setEditable(true);
    usernameTxt.setEditable(true);
    passwordTxt.setEditable(true);
    loginBtn.setEnabled(true);

    connectionLbl.setText("Not Connected");
    connectionLbl.setForeground(Color.red);

   //            ClientHelper helper
   //                    = new ClientHelper(hostname, port, username, password);
   //                   
    //                String serverResponse =helper.sendMessageLogOff(username);
   //                System.out.println(serverResponse);
   //                
   //            
   //        } 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 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();
        }
    }
}

public void createServerFile() throws IOException
{
     String str = "This is a server file!";
        File newTextFile = new File("C:\\ServerFolder\\serverFile.txt");

        FileWriter fw = new FileWriter(newTextFile);
        fw.write(str);
        fw.close();
        System.out.println("\n904 - Server file created - 'serverFile.txt'");
}


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 -> notifyLbl.setText(""));
    timer.setRepeats(false);
    timer.start();

}                                          


private void uploadBtnActionPerformed(java.awt.event.ActionEvent evt) {                                          

    try {

        // 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();
        String text = "This is " + username + "'s file!";
        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, text);
            System.out.println("Response:\n" + "File name: " + myFile + " User: " + username);

             notifyLbl.setText("File Uploaded");

            Timer timer = new Timer(5000, e -> notifyLbl.setText(""));
            timer.setRepeats(false);
            timer.start();
        }
    } 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);
    }
}                                         


private void downloadBtnActionPerformed(java.awt.event.ActionEvent evt) {                                            
    try {
        // TODO add your handling code here:          
        String hostname = hostTxt.getText();
        String port = portTxt.getText();
        username = usernameTxt.getText();
        String password = passwordTxt.getText();
        String fileToDownload = downloadFileNameTxt.getText();
        String messageInFile = "User Downloaded: " + username + " *********This is a server File!**********";
        ClientHelper helper
                = new ClientHelper(hostname, port, username, password);

        File file = new File("C:\\ServerFolder\\" + fileToDownload + ".txt");
        if (!file.exists()) {
            System.out.println("File not found!");
        } else {

            helper.readFileAndSend(fileToDownload, messageInFile);
            System.out.println("\nResponse:\n" + "File name: " + fileToDownload + " User: " + username);

            notifyLbl.setText("File Downloaded");

            Timer timer = new Timer(5000, e -> notifyLbl.setText(""));
            timer.setRepeats(false);
            timer.start();
        }
    } 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 client = new ClientGUI(new Server());
    client.createUserFolder("DownloadedFiles");

    //client.createServerFile("serverFile");

    /* 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 downloadFileNameTxt;
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                   

}

Server.java

  public class Server implements ActionListener {
     JButton button = new JButton();
     public static void main(String[] args) {

    ClientGUI client = new ClientGUI();
    client.createUserFolder("ServerFolder");   

    Server server = new Server();      
    server.button = client.getButton();

    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 to Login");
            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


   //                 //LogOff
   //                DatagramMessage requestToLogOff = mySocket.receiveMessageAndSender();
   //                System.out.println("\n401 - Request Received to Log off");
   //                String response = requestToLogOff.getMessage();
   //
   //                System.out.println("402 - Log off Successful - Goodbye " + response);
   //                // Now send the echo to the requestor
   //                mySocket.sendMessage(request.getAddress(),
    //                        request.getPort(), response);                                                                           
     //                //End LogOff




   //                //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!");
   //                writer.close();
     //                
  //                //End Upload  


            //Start Download
             client.createServerFile();
             System.out.println("\n504 - Download Requested..."); 
             File downloadFolder = new File("C:\\ServerFolder\\serverFile.txt");
             String myFile = null;

                 BufferedReader reader = new BufferedReader(new FileReader(downloadFolder));
                 StringBuilder sb = new StringBuilder();
                 String line = reader.readLine();                 
                 while(line != null)
                 {
                     sb.append(line);
                     sb.append(System.lineSeparator());
                     line = reader.readLine();                         
                 }     
                  myFile = sb.toString();

                 mySocket.sendMessage(request.getAddress(), request.getPort(), myFile + "\n\n501 - Download Complete");
                 //System.out.println("\n508 - Download Requested..."); 
                 JOptionPane.showMessageDialog(null, "File download complete!");  
                  System.out.println("508 - File download complete!"); 
              //End Download


        } //end while  

    } // end try       
    catch (Exception ex) {
        ex.printStackTrace();
    } // end catch     
}//end main

@Override
public void actionPerformed(ActionEvent e) {       
    if(button.getModel().isPressed())
    System.out.println("the button is pressed");
}




 } // end class      

Solution

  • You're not calling initComponents() when you use the constructor that takes an ActionListener parameter, and so none of the components get initialized and all remain null. So change this:

    public ClientGUI(ActionListener listen)
    {
        uploadBtn.addActionListener(listen);
    }
    

    to this:

    public ClientGUI(ActionListener listen)
    {
        this(); // call the default constructor first which calls initComponents.
        uploadBtn.addActionListener(listen);
    }
    

    or you could call initComponents directly:

    public ClientGUI(ActionListener listen)
    {
        initComponents();
        uploadBtn.addActionListener(listen);
    }
    

    But I don't like this second solution as well, since if you put other initialization code in the default constructor, you'll need to call that explicitly in both constructors.