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 :

Problème en programmant un GUI swing


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 20
    Par défaut Problème en programmant un GUI swing
    Salut ,

    J'ai un parser XML qui fonctionne en mode très bien en mode console.
    Donc dans la gestion de mes évènements j'aimerais faire appel au fur et à mesure à mes différentes fonctions.

    Voici mes fichiers principaux:
    Le fichier de mon interface:
    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
     
    package mkrss;
    import java.awt.FlowLayout;
    import java.awt.Dimension;
    import javax.swing.*;
    import javax.swing.border.*;
    import java.awt.*; 
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.io.*;
     
     
     
    public class InterfaceGraphique extends JFrame implements ActionListener{
     
     
    	private JPanel container = null;//Déclaration de l'objet JPanel	
    	private FlowLayout layout = null ;//Déclaration de notre layout
    	private JLabel texte = null;//Déclaration de l'objet JLabel
    	private JButton bouton = null;//Déclaration du bouton
    	private int nombre = 0; //Déclaration du chiffre
    			JTextField urlfield = null;
     
    	public InterfaceGraphique(){
     
    		super();		
    		build();//On initialise notre fenêtre
     
    	}//Fin de FenetreAccueil
     
    	private void build(){
    		this.setTitle("Morad KALKOUL: paser de flux RSS"); //On donne un titre à l'application
    		this.setSize(400,400); //On donne une taille à notre fenêtre
    		this.setLocationRelativeTo(null); //On centre la fenêtre sur l'écran
    		this.setResizable(true) ; //On interdit la redimensionnement de la fenêtre
    		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //On dit à l'application de se fermer
    		//lors du clic sur la croix
    //		On lui spécifie un container principal
    		this.setContentPane(getContainer());
    	}//fin de build
     
    	private JPanel getContainer(){
    		layout = new FlowLayout(); //Instanciation du layout
    		layout.setAlignment(FlowLayout.LEFT);//On centre les composants
     
    		container = new JPanel() ; //On crée notre objet
    		container.setLayout(layout); //On applique le layout
     
    		texte = new JLabel() ;//On crée notre objet
    		texte.setPreferredSize(new Dimension(250,25)) ;//On lui donne une taille
    		texte.setText("Veuillez saisir une l'adresse d'un flux RSS:"); //On lui donne un texte
     
    		container.add(texte);//On l'ajoute au container
     
     
    		bouton = new JButton () ;//Création du bouton
    		bouton.setPreferredSize(new Dimension(125,25)) ;//On lui donne une taille
    		bouton.setText("OK") ;//On lui donne un texte
     
    		urlfield = new JTextField();
    		urlfield.setPreferredSize(new Dimension(75,25));
    		container.add(urlfield);
     
     
    		bouton.addActionListener(this);//On ajoute la fenêtre en tant qu'écouteur du bouton
     
    		container.add(bouton);//On l'ajoute à la fenêtre
     
     
     
    		return container ;
    	}
     
    	public void actionPerformed(ActionEvent e){
    		if(e.getSource() == bouton){//Si l'action émane bien du bouton
    			nombre++;//On incrémente nombre de 1
    			texte.setText("Vous avez cliqué " + nombre + " fois sur le bouton"); //On nomre dans le label
    			OutilsDOM monoutil = new OutilsDOM();
     
    			monoutil.entreeClavier= new BufferedReader(
    		               new InputStreamReader(System.in));
     
    			monoutil.OuvrirConnexion(urlfield.toString());
     
     
     
     
     
    		}//Fin de IF
     
    	}//Fin de actionPerformed
     
        public static void main(String[] args) throws Exception {
     
     
     	   InterfaceGraphique gui = new InterfaceGraphique();
     	   gui.setVisible(true);
     
        } 
     
     	   //http://tempsreel.nouvelobs.com/file/rss_perm/rss_permanent.xml
     	   //monoutil.TraitementDunFlux(monoutil, gui);
     
    }//Fin classe InterfaceGraphique
    puis mon fichier avec mes procédures de traitement:
    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
     
    /****************************************
     * Nom de fichier: OutilsDOM.java       *
     * Author:                              *
     * Date : 15 décembre 2006              *
     * Rôle:                                *
     *                                      *
     *                                      *
     *****************************************/
     
     
     
    /**
     *
     * @author Morad KALKOUL
     */
    package mkrss;
    import java.io.*;
    import java.net.*;
    import java.util.Vector;
     
    import javax.xml.parsers.*;
    import org.w3c.dom.*;
     
    public class OutilsDOM {
     
    	public MkTree rssvct = new MkTree();//Déclaration d'un tableau.
    	public  InputStream is ;  
    	BufferedReader entreeClavier;
    	 String rep;
     
     
     
     
     
    	 public void OuvrirConnexion(String urlparam)throws Exception {
     
    		try
    		{
    		URL url = new URL(urlparam);
    	    URLConnection connection = url.openConnection();
    	    connection.connect();
    	    this.is = connection.getInputStream();
     
     
    		}
    		catch(Exception e)
    		{
    			throw new Exception("URL incorrecte ou mal formée.");
    		}
     
    	}//fin de OuvrirConnexion
     
    	public Document CreerFabriqueDocument (InputStream isparam)throws Exception {
     
    	    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
    	    DocumentBuilder db = dbf.newDocumentBuilder();
    	    Document doc = db.parse(isparam);
     
    		return doc;
     
    	}//Fin CreerFabriqueDocument
     
    	public void AfficherDocument(Document document)throws Exception {
    		Element racine = document.getDocumentElement();
    		AfficherNode(racine);
    	}//Fin de AfficherDocument
     
    	public void AfficherNode(Node node)throws Exception {
    		System.out.println(node);
    		NodeList nodes = node.getChildNodes();
    		for(int i=0; i<nodes.getLength(); i++){
    			Node n = nodes.item(i);
    			AfficherNode(n);
    		}//fin de for
    	}//Fin de AfficherNode
     
    	public void AfficherDocumentSimple (Document document) throws Exception {
     
    		/* Parcours de l'arbre et extraction des informations */;
     
    	    NodeList nlitem = document.getElementsByTagName("item");
     
    	    for (int i=0 ; i<nlitem.getLength(); i++)
    	    {
    	        Element item = (Element)nlitem.item(i);
     
    	        /* Affichage des titres des articles */
     
    	        for (Node child = item.getFirstChild(); child!=null ; child = child.getNextSibling())
     
    	        {
    	            if (child.getNodeType() == Node.ELEMENT_NODE && ((Element)child).getTagName().equals("title"))
    	            {
     
    	                System.out.println(i+1 + "\t" + child.getTextContent());
    	            }
    	            else if  (child.getNodeType() == Node.ELEMENT_NODE && ((Element)child).getTagName().equals("description"))
    	                {  
    	                    System.out.println("\t\t" + child.getTextContent());
    	                }
    	            	/*else if (child.getNodeType() == Node.ELEMENT_NODE && ((Element)child).getTagName().equals("link"))   
    	            		{  
    	            			System.out.println("\t\t" + child.getTextContent());
    	            		}*/
    	        } 
    	    }	
     
     
    	}//Finde AfficherDocumentSimple
     
     
     
     
     
    	public void TraitementDunFlux(OutilsDOM monoutil, InterfaceGraphique gui)throws Exception {
     
     
    		   String atitre = "";				//variablede travail.
    		   String adescription = "";    	//variable de travail.
    		   String alink ="";				//variable de travail.
    		   String saisie;
    		   //MkItem  anode = new MkItem(); 	//Déclaration d'un élement contenant toutes les infos concernant un titre.
    		   monoutil.rep ="OK";
     
    		monoutil.entreeClavier= new BufferedReader(
    	               new InputStreamReader(System.in));
     
     
    		while (! monoutil.rep.equals("fin")){
     
    	    	   System.out.println ("Saisissez une url :");
    	           saisie = monoutil.entreeClavier.readLine().toString();
     
    	    	   System.out.println ("Merci !");
     
    	    	   monoutil.OuvrirConnexion(saisie);
     
    	    	   Document envfabricdoc = monoutil.CreerFabriqueDocument(monoutil.is);
     
    	    	   /* Parcours de l'arbre et extraction des informations */;
     
    	   	    	NodeList nlitem = envfabricdoc.getElementsByTagName("item");
     
    	   	    	for (int i=0 ; i<nlitem.getLength(); i++)
    	   	    	{
     
    	   	    		Element item = (Element)nlitem.item(i);
     
     
    	   	    		/* Affichage des titres et des articles        */
    	   	    		/* et remplissage au fur et à mesure du vector */
     
    	   	    		for (Node child = item.getFirstChild(); child!=null ; child = child.getNextSibling())   
    	   	    		{
     
    	   	    			if (child.getNodeType() == Node.ELEMENT_NODE && ((Element)child).getTagName().equals("title"))
    	   	    			{
    	   	    				atitre = child.getTextContent();
    	   	    				//System.out.println(i+1 + "\t" + atitre);
    	   	    			}
    	   	    			else if  (child.getNodeType() == Node.ELEMENT_NODE && ((Element)child).getTagName().equals("description"))
    	   	                {  
    	   	    				adescription = child.getTextContent();    
    	   	    				//System.out.println("\t\t" + adescription);
    	   	                }
    	   	            	else if (child.getNodeType() == Node.ELEMENT_NODE && ((Element)child).getTagName().equals("link"))   
    	   	            		{  
    	   	            			alink = child.getTextContent();
    	   	            			//System.out.println("\t\t" + alink);
    	   	            		}
     
    	   	    		} //fin de for
     
    	   	    		//Initialisation d'un élément à ajouter au vecteur.
    	   	    		MkItem anode = new MkItem(saisie, atitre, adescription,alink, false);
     
    	   	    		System.out.println(i+1 + "\t" + anode.titre );
    	   	    		System.out.println( "\t");
     
     
    		    	    //ajout de l'élément au vecteur.
    		    	    monoutil.rssvct.ajouter(anode);
     
    	   	    	}//fin de for
     
     
    		}	
    	}//FIN DE RecuperationDunFlux
     
    } //FIN DE DECLARATION DE LA CLASSE MONPARSER
    Dans mon interfacegraphique dans la procedure qui capte les evenements:

    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
     
    public void actionPerformed(ActionEvent e){
    		if(e.getSource() == bouton){//Si l'action émane bien du bouton
    			nombre++;//On incrémente nombre de 1
    			texte.setText("Vous avez cliqué " + nombre + " fois sur le bouton"); //On nomre dans le label
    			OutilsDOM monoutil = new OutilsDOM();
     
    			monoutil.entreeClavier= new BufferedReader(
    		               new InputStreamReader(System.in));
     
    			monoutil.OuvrirConnexion(urlfield.toString());
     
     
     
     
     
    		}//Fin de IF
     
    	}//Fin de actionPerformed
    j'aimerais bien faire appel à "monoutil.OuvrirConnexion(urlfield.toString());" sauf que ECLIPSE me dit qu'il y a un message à cette ligne:
    Unhadled exception Type Exception

    Alors je gère certainement mal les exceptions mais c'est une chose que je ne maitrise pas.

    Quelqu'un peut m'aider, Merci.

  2. #2
    Membre éprouvé
    Avatar de Janitrix
    Inscrit en
    Octobre 2005
    Messages
    3 391
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 3 391
    Par défaut
    C'est simple, lors de la définition de ta méthode OuvrirConnexion tu met un throws Exception :
    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
    public void OuvrirConnexion(String urlparam)throws Exception {
    		
    		try
    		{
    		URL url = new URL(urlparam);
    	    URLConnection connection = url.openConnection();
    	    connection.connect();
    	    this.is = connection.getInputStream();
     
    	    
    		}
    		catch(Exception e)
    		{
    			throw new Exception("URL incorrecte ou mal formée.");
    		}
    	
    	}
    Tu dois donc mettre tout appel à cette méthode dans un bloc try/catch.
    Donc tu dois faire :
    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
    public void actionPerformed(ActionEvent e){
    		if(e.getSource() == bouton){//Si l'action émane bien du bouton
    			nombre++;//On incrémente nombre de 1
    			texte.setText("Vous avez cliqué " + nombre + " fois sur le bouton"); //On nomre dans le label
    			OutilsDOM monoutil = new OutilsDOM();
     
    			monoutil.entreeClavier= new BufferedReader(
    		               new InputStreamReader(System.in));
    			try {
    			     monoutil.OuvrirConnexion(urlfield.toString());
                            }catch(Exception e){
                                 //Ton traitement d'erreur
                             }
     
    		}//Fin de IF
     
    	}//Fin de actionPerformed
    Attention : pour récupérer le texte qu'il y a dans un JTextField, il faut faire tonTextField.getText(), et non tonTextField.toString(); içi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    try {
    			     monoutil.OuvrirConnexion(urlfield.getText());
                            }catch(Exception e){
                                 //Ton traitement d'erreur
                             }
    Alors je gère certainement mal les exceptions mais c'est une chose que je ne maitrise pas.
    Si tu les gères pas, tu ne les maitrises pas .
    Ce code est de vraiment de toi ?!

  3. #3
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    Il te faut tout simplement catcher l'exception :



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    try {
        monoutil.OuvrirConnexion(urlfield.toString());
    } 
    catch(Exception e){
        e.printStackTrace();
        //Gérer l'exception
    }

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 20
    Par défaut
    Ben oui, ça t'étonne?

    Pour le swing j'ai utilsé le tuto :
    http://baptiste-wicht.developpez.com...page=page_1#LI

    je dois rendre un petit programme en cours de java.
    A l'origine, il fonctionne très bien en mode console, j'aimerais rajouter un GUI.
    Je n'étais pas là au cours sur les exceptions, donc je simplifie au maximum mais si c'est indispensable pour la suite je vais m'y pencher.

    Merci encore pour votre aide, @+.

  5. #5
    Membre chevronné
    Avatar de link256
    Profil pro
    Développeur Java
    Inscrit en
    Février 2003
    Messages
    596
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2003
    Messages : 596
    Par défaut
    petite astuce pour les exception sous eclipse je sais pas si elle marche sur toute les versions

    tu te place sur la ligne ou ton exception n'est pas gérée avec un clic gauche par exemple et la tu combines les touche suivantes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Ctrl + shift + la touche "&"
    la eclipse te proposera un throw exception ou un try catch avec un catch spécifique à l'exception pouvant etre générée.

    c'est toujours mieux de spécialisé son catch quand on le peut

Discussions similaires

  1. probléme en programme fenetre avec swing
    Par grungy-soul dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 16/12/2007, 00h14
  2. Problème de programmation orientée objet
    Par dan65 dans le forum WinDev
    Réponses: 8
    Dernier message: 17/09/2006, 01h04
  3. problème finalisation programme
    Par depelek dans le forum Installation, Déploiement et Sécurité
    Réponses: 9
    Dernier message: 02/05/2006, 16h17
  4. Réponses: 1
    Dernier message: 26/09/2005, 19h29
  5. [plugin]Le meilleur pour realisation GUI SWING/SWT ?
    Par Ancien_Legolas dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 01/06/2005, 11h08

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