Probleme avec JFrame

Signaler
Messages postés
3
Date d'inscription
dimanche 15 janvier 2012
Statut
Membre
Dernière intervention
27 janvier 2012
-
Messages postés
159
Date d'inscription
mardi 2 janvier 2007
Statut
Membre
Dernière intervention
7 mai 2012
-
Bonjour a tous,
Je suis debutant en Java.
JE suis confronte a un problème.
J'ai une JFrame qui marche, copie colle d'un site :
http://www.javabeginner.com/java-swing/java-swing-tutorial

Je l'ai un peu modifie. Rien de bien mechant.

import javax.swing.JFrame;
import javax.swing.JLabel;

//import statements
//Check if window closes automatically. Otherwise add suitable code
public class HelloWorldFrame extends JFrame {
HelloWorldFrame(int i) {
JLabel jlbHelloWorld = new JLabel(String.valueOf(i));
add(jlbHelloWorld);
this.setSize(100, 100);
// pack();
setVisible(true);
}
}


Ce code marche egalement.
Mais a l'utilisation de showOpenDialog, c'est la que ca coince.

	public static String RecupererPath(FileFilter type) throws IOException
   	{
        JFileChooser dialogue = new JFileChooser(new File("."));
        dialogue.addChoosableFileFilter(type);
        PrintWriter sortie;
  	  	File fichier = null;
  	  	new HelloWorldFrame(1);
  	  	int i = dialogue.showOpenDialog(null);
  	  	if (i== JFileChooser.APPROVE_OPTION) 
  	  	{
new HelloWorldFrame(2);
  	  		fichier = dialogue.getSelectedFile();
  	  		sortie = new PrintWriter(new FileWriter(fichier.getPath(), true)); 
  	  		sortie.close();
  	  	}
new HelloWorldFrame(3);
  	  	
  	  	return fichier.getPath();
   	}


Le new HelloWorldFrame(1); marche parfaitement. Mais le new HelloWorldFrame(2); et new HelloWorldFrame(3); m'affichent une fenetre vide.
Et par la suite, toutes les JFrame que je creerai, ou que je souhaiterai modifier via un setter seront vide. Rien a y faire.

Auriez vous une solution? Je suis en train de m'arracher les derniers cheveux qu'il me reste!

Merci d'avance.

A.H

6 réponses

Messages postés
159
Date d'inscription
mardi 2 janvier 2007
Statut
Membre
Dernière intervention
7 mai 2012

Salut,
je ne suis pas sur de comprendre.
Qd je teste les frames, elles affichent bien 2 et 3 dans ton JLabel.

Peux tu en dire plus?
Messages postés
3
Date d'inscription
dimanche 15 janvier 2012
Statut
Membre
Dernière intervention
27 janvier 2012

Salut,
C'est la ou c'est incompréhensible :) Chez moi ça ne marche pas....
Ça m'affiche une fenêtre vide. Rien à l’intérieur.
Messages postés
159
Date d'inscription
mardi 2 janvier 2007
Statut
Membre
Dernière intervention
7 mai 2012

Salut,
Je vais te filer toute la classe main... peut être y trouveras-tu l'erreur.

import java.io.File;
import javax.swing.filechooser.FileFilter;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import javax.swing.JFileChooser;


public class Main {

public static void main(String[] args) throws IOException {
FileFilter ff = new FileFilter(){
public boolean accept(File f){
if(f.isDirectory()) return true;
else if(f.getName().endsWith(".txt")) return true;
else return false;
}
public String getDescription(){
return "TXT files";
}
};
RecupererPath(ff);
}

public static String RecupererPath(FileFilter type) throws IOException
   	{
        JFileChooser dialogue = new JFileChooser(new File("."));
        dialogue.addChoosableFileFilter(type);
        PrintWriter sortie;
  	  	File fichier = null;
  	  	new HelloWorldFrame(1);
  	  	int i = dialogue.showOpenDialog(null);
  	  	if (i== JFileChooser.APPROVE_OPTION) 
  	  	{
  	  		new HelloWorldFrame(2);
  	  		fichier = dialogue.getSelectedFile();
  	  		sortie = new PrintWriter(new FileWriter(fichier.getPath(), true)); 
  	  		sortie.close();
  	  	}
new HelloWorldFrame(3);
  	  	
  	  	return fichier.getPath();
   	}
}


Ya 2 Filefilter, une dans la librairie swing et une autre.
Vu que FileFilter est une classe abstraite il faut implémenter ses méthodes (j'ai trouvé ce code dans le forum) ou créer une classe fille qui redéfinit les méthodes.

Pt truc intéressant à savoir, dans ta classe HelloWorldFrame, ajoute la ligne ci-dessous dans le constructeur
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

Lorsque tu appuyeras sur la croix de fermeture de la fenêtre, ça supprimera le process en même temps (sans cette ligne, même si tu fermes la fenêtre, tu retrouves encore ton process dans le gestionnaire de tâches)

Voilà, si c résolu, n'hésites pas à le mentionner
Enjoy
Messages postés
159
Date d'inscription
mardi 2 janvier 2007
Statut
Membre
Dernière intervention
7 mai 2012

Ne fut ce qu'un merci aurait été le bienvenu :-/
Messages postés
3
Date d'inscription
dimanche 15 janvier 2012
Statut
Membre
Dernière intervention
27 janvier 2012

J'avais oublié de repondre.

J'ai trouve une solution à mon problème. Je ne m'explique pas pourquoi mon code ne méchait pas et pourquoi ma solution très moche marche. Elle est tellement pas clair, que personne n'y comprendrais rien.

Merci quand même pour l'aide.
Messages postés
159
Date d'inscription
mardi 2 janvier 2007
Statut
Membre
Dernière intervention
7 mai 2012

You're welcome :)