IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AWT/Swing Java Discussion :

get => pointeur null apres fermeture d'une sous-fenetre


Sujet :

AWT/Swing Java

  1. #1
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 681
    Points
    18 681
    Par défaut get => pointeur null apres fermeture d'une sous-fenetre
    Bonjour,


    Je crois que tout est dans le titre...
    En gros, j'ai fait des getXXX pour accéder directement aux component que je veux modifier... et après la fermeture d'une sous-fenêtre je me prends des Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    public class MyFrame extends JFrame implements ActionListener, WindowListener {
    	protected MyConnection ftp;
    	private JPanel panel;
    	private JTextField login;
    	private JPasswordField password;
    	private JButton connect;
    	private File selected_file;
     
    	public void select() {
    	    	selected_file = chooser.getSelectedFile();
              getFilename().setText(chooser.getSelectedFile().getAbsolutePath());
    	    	getUpload().setEnabled(true);
    	    	selector.dispose();
    	}
     
    	public void upload() {
    		if (selected_file != null) {
    			MyUpload temp = new MyUpload(selected_file,this);
    			temp.start();
    		}
    	}
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    public class MyUpload extends JFrame implements ActionListener, WindowListener {
    	private JProgressBar jBar = new JProgressBar();
    	private File fileToUpload;
    	private MyConnection ftp;
    	protected Thread t;
    	protected MyFrame parent;
     
    	MyUpload(File file, MyFrame frame) {
    		super();
    		fileToUpload = file;
    		parent = frame;
    		ftp = parent.getFtp();
     
    		t = new Thread() {
    			public void run() {
    				ftp.sendFile(fileToUpload,jBar);
    				getButton().setLabel("Fermer");
    			}
    		};
    	}
     
    	public void start() {
    		t.start();
    	}	
    }

    je débute avec les interfaces graphiques java... donc ce n'est pas forcemment très propre

  2. #2
    Membre averti Avatar de let_me_in
    Inscrit en
    Mai 2005
    Messages
    441
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 441
    Points : 437
    Points
    437
    Par défaut
    desole, mais c'est trop long,
    tu peux me dire a quelle ligne est generee l'exception ?

  3. #3
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 681
    Points
    18 681
    Par défaut
    J'ai un peu raccourci...

    Alors ces erreurs n'arrivent qu'une fois que j'ai fait un premier upload...

    par exemple avec la méthode getHBox2() de MyFrame

  4. #4
    Expert éminent

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 814
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 814
    Points : 7 642
    Points
    7 642
    Par défaut
    Salut,

    Citation Envoyé par gorgonite
    J'ai un peu raccourci...
    C'est encore trop long...
    Il y a du code qui n'a rien à voir avec ton problème et qui ne facilite pas la compréhension de ton programme.
    Et il n'y en a pas assez pour pouvoir reproduire l'erreur...

    Citation Envoyé par gorgonite
    Alors ces erreurs n'arrivent qu'une fois que j'ai fait un premier upload...
    Et que se passe-t'il dans le code une fois que tu as fait ton premier upload???

    Citation Envoyé par gorgonite
    par exemple avec la méthode getHBox2() de MyFrame
    A quelle ligne exactement se produit l'erreur?

  5. #5
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 681
    Points
    18 681
    Par défaut
    Voilà le message d'erreur complet... mais les lignes ne serviront à rien puisque j'ai raccourci le code


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    	at clubinfo.MyFrame.select(MyFrame.java:235)
    	at clubinfo.MyFrame.actionPerformed(MyFrame.java:268)
    	at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
    	at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
    	at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
    	at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
    	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
    	at java.awt.Component.processMouseEvent(Unknown Source)
    	at javax.swing.JComponent.processMouseEvent(Unknown Source)
    	at java.awt.Component.processEvent(Unknown Source)
    	at java.awt.Container.processEvent(Unknown Source)
    	at java.awt.Component.dispatchEventImpl(Unknown Source)
    	at java.awt.Container.dispatchEventImpl(Unknown Source)
    	at java.awt.Component.dispatchEvent(Unknown Source)
    	at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
    	at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
    	at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
    	at java.awt.Container.dispatchEventImpl(Unknown Source)
    	at java.awt.Window.dispatchEventImpl(Unknown Source)
    	at java.awt.Component.dispatchEvent(Unknown Source)
    	at java.awt.EventQueue.dispatchEvent(Unknown Source)
    	at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)
    	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    	at java.awt.EventDispatchThread.run(Unknown Source)

  6. #6
    Expert éminent

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 814
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 814
    Points : 7 642
    Points
    7 642
    Par défaut
    Citation Envoyé par gorgonite
    Voilà le message d'erreur complet... mais les lignes ne serviront à rien puisque j'ai raccourci le code
    J'espère que chez toi tu n'as pas raccourci le code.....

    Si tu arrives à copier les vingt lignes d'erreur, tu vas bien réussir à nous copier la ligne 235 de MyFrame.java...

    C'est quoi getFileName()?
    C'est quoi getUpLoad()?
    C'est quoi selector?
    (ok pour faire le tri dans le code que tu nous présente, mais présente quand même le nécessaire )

    C'est lequel qui déconne?

    Tu essayes d'utiliser un objet qui n'existe plus, ou qui n'est pas défini, dans ton code. La ligne d'erreur te donne un gros indice sur l'objet qui pose problème. Une fois que tu sais lequel c'est, recherche pourquoi il n'est pas défini.

  7. #7
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 681
    Points
    18 681
    Par défaut
    Si tu arrives à copier les vingt lignes d'erreur, tu vas bien réussir à nous copier la ligne 235 de MyFrame.java...
    c'est juste ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    getFilename().setText(chooser.getSelectedFile().getAbsolutePath());

    le hic est que je comprends pas pourquoi il n'existe plus...
    le seul truc sur lequel j'ai fait dispose() entre temps, c'est l'instance de MyUpload()

  8. #8
    Expert éminent

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 814
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 814
    Points : 7 642
    Points
    7 642
    Par défaut
    Tu peux montrer le code de ta méthode getFileName()?

  9. #9
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 681
    Points
    18 681
    Par défaut
    Voilà...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    	public Box getHBox1() {
    		Box res = null;
    		if (ftp.testConnection()) {
    			res = ((Box) ((Box) panel.getComponent(1)).getComponent(0));
    		}
    		return res;
    	}
     
    	public JLabel getFilename() {
    		JLabel res = null;
    		if (ftp.testConnection())
    			res = (JLabel) getHBox1().getComponent(1);
    		return res;
    	}

  10. #10
    Expert éminent

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 814
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 814
    Points : 7 642
    Points
    7 642
    Par défaut
    Regarde ce que vaut ton Si il n'est pas vrai, tu récupères null... ce qui expliquerait l'exception...

    Il faudrait que tu rajoutes des gestions de tes objets... c'est dangereux de récupérer un null et de l'utiliser directement dans le reste du code sans prévoir le coup.

    Pour le reste, si l'erreur ne vient ps du ftp.testConnection(), on ne sait pas ce que tu vas chercher avec les getComponent(...), donc à toi de faire le parcours si le problème vient de là...

  11. #11
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 681
    Points
    18 681
    Par défaut
    Gagné c'était cela...
    En revanche, je ne comprends pas pourquoi ma connexion se ferme.

    La seule méthode de ftp que j'utilise après l'initialisation est sendFile

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    	public void sendFile(File fileToUpload,JProgressBar pBar) {
    		String filename = fileToUpload.getName();
    		String filepath = fileToUpload.getAbsolutePath();
    		try {
    			OutputStream ftp_stream = con.put(filename);
    			try {
    				FileInputStream file_stream = new FileInputStream(filepath);
    		        // initialisation de la progressBar au début du traitement
    		        pBar.setMinimum(0);
    		        int maxBar = (int) fileToUpload.length() / 100;
    		        pBar.setMaximum(maxBar);
    		        pBar.setValue(0);
     
    				int tmp = 0;
    				int i = 0;
    				while (tmp != -1) {
    					try {
    						i++;
    						if ((i%100) == 0)
    							pBar.setValue(pBar.getValue()+1);
    						tmp = file_stream.read();
    						ftp_stream.write(tmp);
    					} catch (IOException ex) {
    						ex.printStackTrace();
    					}
    				}
    				file_stream.close();
    			} catch (FileNotFoundException ex) {
    				ex.printStackTrace();
    			}
    			ftp_stream.flush();
    			ftp_stream.close();
    		} catch (IOException ex) {
    			ex.printStackTrace();
    		}
    	}
    Et il ne me semble pas que je la referme...

  12. #12
    Expert éminent

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 814
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 814
    Points : 7 642
    Points
    7 642
    Par défaut
    Il doit y avoir quelque chose dans ta méthode testConnection() alors...
    On pourrait la voir?

  13. #13
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 681
    Points
    18 681
    Par défaut
    Il doit y avoir quelque chose dans ta méthode testConnection() alors...
    On pourrait la voir?
    Ben là elle n'est pas de moi. je l'ai récupéré toute fait sur un site... le package s'appelle com.radinks.net

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    	public boolean testConnection()
    	{
    		if(sock_control.isConnected() &&
    				!sock_control.isInputShutdown() &&
    				!sock_control.isOutputShutdown())
            {
                try {
                    writeln("NOOP");
                    return  check_reply("200");
                }
                catch (IOException ex) {
                    return false;
                }
            }
            return false;
    	}
    Sinon, j'ai enlevé tous ces tests. et donc ça plante au moment où je réutilise la connexion...
    j'ai donc tenté de reconnecter "à la volée"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    		t = new Thread() {
    			public void run() {
    				// Instanciation et lancement du traitement
    				boolean tmp = true;
    				if (ftp == null) {
    					tmp = parent.connect();
    					ftp = parent.getFtp();
    				}
    				if (tmp && (parent.getFtp().testConnection())) {
    					ftp.sendFile(fileToUpload,jBar);
    					getButton().setLabel("Fermer");
    				} else
    					System.err.println("Problème avec la connexion");
    			}
    		};
    Et en gros, ça ne reconnecte plus

  14. #14
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 681
    Points
    18 681
    Par défaut
    J'ai fait cela, et ça marche...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    	public void upload() {
    		if (selected_file != null) {
    			if ((ftp!=null) && (ftp.testConnection())) {
    				MyUpload temp = new MyUpload(selected_file,this);
    				temp.start();
    			} else {
    				close();
    				connect();
    				nextStep();
    				getFilename().setText(selected_file.getAbsolutePath());
    				getUpload().setEnabled(true);
    				upload(1);
    			}
    		}
    	}
     
    	public void upload(int i) {
    		if (selected_file != null) {
    			if ((ftp!=null) && (ftp.testConnection())) {
    				MyUpload temp = new MyUpload(selected_file,this);
    				temp.start();
    			} else {
    				JOptionPane.showMessageDialog(this,"Problème avec la connexion","Erreur",0);
    			}
    		}
    	}
    En revanche, si quelqu'un peut m'expliquer pourquoi la première méthode ne marchait pas...

  15. #15
    Expert éminent

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 814
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 814
    Points : 7 642
    Points
    7 642
    Par défaut
    Euh... avec tous ces petits bouts de code en vrac, ça ne va pas être facile de trouver où ça bug...

    Je te conseillerais de bien revoir ton code, afin de trouver où tu perds la connexion. Parce que le bricolage, ça marche, mais c'est pas forcément très joli... ni très facile à maintenir...

  16. #16
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 681
    Points
    18 681
    Par défaut
    Euh... avec tous ces petits bouts de code en vrac, ça ne va pas être facile de trouver où ça bug...

    Je te conseillerais de bien revoir ton code, afin de trouver où tu perds la connexion.

    Je ne sais pas si je vais étudier cette librairie à fond, ou si je vais en réécrire une complète... comme ça je saurais vraiment ce qui cause cette déconnection impromptue


    En tout cas, merci pour votre aide

    ps: si vous avez un lien sur le protocole ftp de A à Z, ou une classe assez complète qui marche bien... je suis preneur

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Recharger JFrame après fermeture d'une autre JFrame
    Par Jb_One73 dans le forum Agents de placement/Fenêtres
    Réponses: 4
    Dernier message: 22/02/2015, 20h05
  2. Réponses: 12
    Dernier message: 26/04/2007, 15h02
  3. bouton quitter et fermeture d'une des fenetres
    Par chloep dans le forum AWT/Swing
    Réponses: 19
    Dernier message: 19/03/2007, 10h32
  4. Fermeture d'une seul fenetre parmi plusisieur
    Par gailup dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 03/02/2007, 21h19
  5. Forcer de tuer un process après fermeture d'une applic!
    Par _shuriken_ dans le forum Windows XP
    Réponses: 14
    Dernier message: 26/01/2007, 15h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo