Probleme avec JFrame

adhaccoun Messages postés 3 Date d'inscription dimanche 15 janvier 2012 Statut Membre Dernière intervention 27 janvier 2012 - 17 janv. 2012 à 02:51
dvwyns Messages postés 159 Date d'inscription mardi 2 janvier 2007 Statut Membre Dernière intervention 7 mai 2012 - 27 janv. 2012 à 16:57
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

dvwyns Messages postés 159 Date d'inscription mardi 2 janvier 2007 Statut Membre Dernière intervention 7 mai 2012
17 janv. 2012 à 12:02
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?
0
adhaccoun Messages postés 3 Date d'inscription dimanche 15 janvier 2012 Statut Membre Dernière intervention 27 janvier 2012
17 janv. 2012 à 18:43
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.
0
dvwyns Messages postés 159 Date d'inscription mardi 2 janvier 2007 Statut Membre Dernière intervention 7 mai 2012
18 janv. 2012 à 09:54
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
0
dvwyns Messages postés 159 Date d'inscription mardi 2 janvier 2007 Statut Membre Dernière intervention 7 mai 2012
27 janv. 2012 à 14:38
Ne fut ce qu'un merci aurait été le bienvenu :-/
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
adhaccoun Messages postés 3 Date d'inscription dimanche 15 janvier 2012 Statut Membre Dernière intervention 27 janvier 2012
27 janv. 2012 à 14:48
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.
0
dvwyns Messages postés 159 Date d'inscription mardi 2 janvier 2007 Statut Membre Dernière intervention 7 mai 2012
27 janv. 2012 à 16:57
You're welcome :)
0
Rejoignez-nous