单击按钮后如何使用jFileChooser读取文件?

时间:2014-03-21 17:34:45

标签: java swing jfilechooser

我想使用jFileChooser读取文件。按下按钮(例如jbutton1ChooseFile)后,jFileChooser会出现并选择所需的文件。选择完成后,将使用另一个按钮(例如jbutton2)来读取用户刚刚选择的文件内容。因此,点击jbutton2时,将读取所选文件。

我发布了几行代码,以便很容易理解我的意思:

     private void jButton1ChooseFileChooseFileActionPerformed(java.awt.event.ActionEvent evt) {                                                             
    // TODO add your handling code here:
    JFileChooser loadFile= new JFileChooser();
    loadFile.setApproveButtonText("Select File");
    loadFile.setAcceptAllFileFilterUsed(false);
    FileNameExtensionFilter f1 = new FileNameExtensionFilter("Text Files", "txt", "text","rtf","doc","docx");
    loadFile.setFileFilter(f1);
    switch (loadFile.showOpenDialog(EncDecApp.this))
             {
                case JFileChooser.APPROVE_OPTION:

                    JOptionPane.showMessageDialog(EncDecApp.this, "Selection Successfull!",
                                                 "Attention!",
                                                 JOptionPane.OK_OPTION);

                   jButton1ChooseFile.setText("File Chosen");
                   jLabelChooseFile.setText(String.valueOf(loadFile.getSelectedFile()).substring(0,30)+"...");
                   fileSelect=true;
                   break;

                case JFileChooser.CANCEL_OPTION:
                   JOptionPane.showMessageDialog(EncDecApp.this, "No file chosen",
                                                 "Attention!",
                                                 JOptionPane.OK_OPTION);
                   loadFile.setSelectedFile(null);
                   jButton1ChooseFile.setText("Browse..");
                   jLabelChooseFile.setText("Choose file to encrypt");
                   break;

                case JFileChooser.ERROR_OPTION:
                   JOptionPane.showMessageDialog(EncDecApp.this, "Error",
                                                 "Choosing File",
                                                 JOptionPane.OK_OPTION);
                   loadFile.setSelectedFile(null);
                   jButton1ChooseFile.setText("Browse..");
                   jLabelChooseFile.setText("Choose file to encrypt");
             }
    loadFile.setVisible(true);
}                               

到此为止它完美无缺。 现在,jButton2的代码如下:

        private void jButton2EncryptEncryptActionPerformed(java.awt.event.ActionEvent evt) {                                                       
    // TODO add your handling code here:
    //Charset charset=Charset.forName("UTF-8");
    int returnVal=loadFile.showOpenDialog(jLabel1);
    if(returnVal==loadFile.APPROVE_OPTION)
    {
      File filePath = loadFile.getSelectedFile();    

    try{
        BufferedReader in = new BufferedReader(new FileReader(filePath));
        String line = null;
        while ((line = in.readLine()) != null) {
            System.out.println(line);
            jTextArea1.append(line + "\n");
        }
    in.close();
    }
    catch(IOException ex)
    {
           System.err.println("Open plaintext error: "+ex);
    }     
    }
}                  

任何帮助都将受到高度赞赏。

1 个答案:

答案 0 :(得分:1)

乍一看,问题似乎是您正在为JFileChooser使用局部变量。也就是说,你有这条线:

JFileChooser loadFile= new JFileChooser();

jButton1ChooseFileChooseFileActionPerformed功能中,还尝试在loadFile功能中引用jButton2EncryptEncryptActionPerformed

为了使loadFile对象可用,您需要将所述loadFile对象作为两个函数所属的类的成员。