2013-05-15 8 views
1

suite à cette question, error message with JButton and JFileChooser, je veux avoir un JButton pour parcourir un fichier en utilisant JFileChooser. Ceci est le code que nous avons:JFileChooser et Jbutton erreurs

package main; 

import java.awt.Component; 
import java.awt.GridBagConstraints; 
import java.awt.GridBagLayout; 
import java.awt.Insets; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.awt.event.ItemEvent; 
import java.awt.event.ItemListener; 
import java.io.File; 
import java.io.FileNotFoundException; 
import java.io.IOException; 
import javax.swing.JButton; 
import javax.swing.JFileChooser; 
import javax.swing.JLabel; 
import javax.swing.JOptionPane; 
import javax.swing.JPanel; 
import javax.swing.JTextField; 

public class Main { 

private static Component frame; 
private static String fullPath; 

public static void main(String args[]) throws FileNotFoundException, IOException { 
    Date start_time = new Date(); 
    try { 

     GridBagConstraints gbc = new GridBagConstraints(); 

     JButton inputButton = new JButton("Browse input file"); 

     final JFileChooser inputFile = new JFileChooser(); 
     inputFile.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES); 

     JPanel myPanel = new JPanel(new GridBagLayout()); 

     myPanel.add(inputButton, gbc); 

     inputButton.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent e) { 
       JFileChooser inputFile = new JFileChooser(); 
       inputFile.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES); 
       if (inputFile.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) { 
        File file1 = inputFile.getSelectedFile(); 
        String fullpathTemp = (String) file1.getAbsolutePath(); 
        fullpathTemp = fullPath; 
       } 
      } 
     }); 
     Date stop_time = new Date(); 
     double etime = (stop_time.getTime() - start_time.getTime())/1000.; 
     System.out.println("\nElapsed Time = " + etime + " seconds\n"); 

    } catch (Exception e) { 
     System.err.println("Error: " + e.getMessage()); 
    } finally { 
    } 
} 
} 

Le problème est que après avoir cliqué sur le bouton « Parcourir le fichier d'entrée » et choisissez le fichier, dès que je clique sur OK, je reçois ce message d'erreur:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException 
at main.Main$1.actionPerformed(Main.java:195) 
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018) 
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341) 
+1

"Je veux avoir un JButton pour parcourir un fichier en utilisant JFileChooser" Qu'est-ce que cela signifie? –

+0

Quelle ligne est la ligne 195 de votre classe Main.java? –

+1

Ce code ne compile pas tel quel. Vous n'avez pas importé 'Date' et cette ligne a une faute de frappe:' inputfile.setFileSelectionMode (JFileChooser.FILES_AND_DIRECTORIES); ' –

Répondre

3

Vous avez déclaré inputFile 3 fois

une fois en tant que classe variable statique

private static JFileChooser inputFile; 

Puis, vous êtes main méthode

final JFileChooser inputFile = new JFileChooser(); 
    // this can't possible compile 
    inputfile.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES); 

Et puis dans votre ActionListener

inputButton.addActionListener(new ActionListener() { 
     public void actionPerformed(ActionEvent e) { 
      JFileChooser inputFile = new JFileChooser(); 
      inputFile.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES); 
      if (inputFile.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) { 
       File file1 = inputFile.getSelectedFile(); 
       String fullpathTemp = (String) file1.getAbsolutePath(); 
       fullpathTemp = fullPath; 
      } 
     } 
    }); 

Il devrait être possible pour ces d'interférer les uns avec les autres qui produirait votre NullPointerException que je peux voir, mais étant donné que votre exemple de code ne sera pas compilé, je peux seulement imaginer que nous ne voyons pas tout

+0

Si je ne déclare pas inputFile dans le constructeur, dès que je clique sur le bouton, j'obtiendrai l'erreur. J'ai édité le code et je pense que vous pouvez le compiler. – MTT

+0

Désolé, méthode principale, même problème – MadProgrammer

+0

Merci beaucoup pour votre solution. Le problème a été résolu – MTT