2016-11-08 13 views
0

* GUIに関する多くのコードはNetBeansによって生成されます。Java - NetBeans経由で別のクラスのボタンのリスナーを追加する

私が得ている問題は、クライアント側で、uploadBtnがnull、nullPointExceptionであることを伝えています。これはインスタンス化されておらず、コンストラクタにactionListenerを追加しているためです。私はNetBeans経由でGUIを構築しましたが、実際の方法についてはわかりません。

私が欲しいのは、uploadBtnがクリックされたときに、クライアントとサーバー側で何か起こることです。ボタンをクリックすると、クライアント側で私用に作成されたactionPerformed() NetBeansが呼び出されますが、ボタンがサーバ側で押されたかどうかを確認する方法がわからない場合は、サーバ側のメソッドが呼び出されます。どんな助けもありがたい。ソケット/データグラムを使用しています。大学プロジェクト。

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  
+0

正式にNullPointerException(NPE)の質問とその詳細な回答を読んでください。あなたがそうしたと仮定すると、例外をスローするスタックトレースと行の重要性を知っておく必要があります。 stacktraceを表示して、どの行が含まれているかを示してください。 –

+0

[標準的なNullPointerException質問リンク](http://stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-how-do-i-fix-it) –

+0

NPEを今見てみましょう。実際にスタックトレースを表示する方法がわからない場合は、それを調べてアップロードします。 –

答えて

1

あなたはActionListenerのパラメータを取るコンストラクタを使用する場合initComponents()を呼び出していない、などのどれもしていませんコンポーネントは初期化され、すべてnullのままです。だから、これを変更:直接

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

またはあなたが呼び出すことができinitComponents:これまで

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

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

しかし、私は、同様にこの第二の溶液を好きではないが、あなたの場合以来、他の初期化コードをデフォルトのコンストラクタに入れて、両方のコンストラクタで明示的にそれを呼び出す必要があります。

+0

ああ、私は参照してください。今見て、それを撃つだろう。ありがとうございました。 –

+0

これはうまくいっていて、nullPointerExceptionを取得しなくなりました。しかし、今私は、アップロードボタンをクリックすると、サーバークラスのactionPerformed()が実行されていないようです。その方法でボタンが正しくクリックされていることを確認していますか? –

+0

@AleksandarZoric:それはまったく別の問題ですが、なぜサーバーで押されているのでしょうか?実行されている実際のクライアントは、サーバークラスの近くにありません。全体のデザインが壊れているように見えます。 –

関連する問題