Interface Graphique

MTP85 Messages postés 12 Date d'inscription mardi 18 mars 2008 Statut Membre Dernière intervention 6 juin 2010 - 5 mai 2010 à 03:11
MTP85 Messages postés 12 Date d'inscription mardi 18 mars 2008 Statut Membre Dernière intervention 6 juin 2010 - 28 mai 2010 à 18:49
Salut, je suis débutant en Java, je réalise une application qui fait affiche quelques informations de l'etat du modem : adresse IP, débit, software.. et qui active aussi le Wifi en précisant le SSID, clé Wifi..

Je travaille avec le Net Beans, j'ai fais les interfaces graphiques avec la palette Swing qui est integrée dans le NetBEans 6.8. Mais mon probleme c'est que comment pourrais je afficher les informations, parce que pour les extraire j'ai utilisé la classe HTMLParsLister, je suis arrivé à afficher toutes les informations ensembles en parcourant une page HTML. Donc je ne sais vraiment pas comment les afficher dans l'interface et leur faire appel depuis la classe du Parser. Voilà le code de la classe :
import java.io.FileReader;

import java.io.Reader;

import javax.swing.text.MutableAttributeSet;

import javax.swing.text.html.HTML;

import javax.swing.text.html.HTMLEditorKit;

import javax.swing.text.html.parser.ParserDelegator;

class HTMLParseLister extends HTMLEditorKit.ParserCallback

{

int td=1,tr=0;

public void handleStartTag(HTML.Tag t, MutableAttributeSet a, int pos) {



if(t.toString().equals("tr") )



{
System.out.println();
tr++ ;

}


if(t.toString().equals("td")){

td++ ;


}

}



public void handleText(char[] data , int pos) {




System.out.print(data);


System.out.print(" ");

}
class Main {

public static void main(String[] args) {


Reader r;

String spec = "l'adresse de la page http" ;

try{
r = new FileReader(spec);

HTMLEditorKit.Parser parser;

System.out.println(" Le parcours de la page " +spec);

parser = new ParserDelegator();

parser.parse(r, new HTMLParseLister(), true);

r.close();

}

catch (Exception e) {

System.out.println("Error: " + e);

e.printStackTrace();

}



}

}




}

10 réponses

maximelien Messages postés 40 Date d'inscription jeudi 22 janvier 2009 Statut Membre Dernière intervention 23 juin 2010
5 mai 2010 à 14:53
Si j'ai bien compris ce que tu veux faire, d'après l'énoncé c'est récupérer du ton interface les valeurs que tu y met ?
0
MTP85 Messages postés 12 Date d'inscription mardi 18 mars 2008 Statut Membre Dernière intervention 6 juin 2010
5 mai 2010 à 16:28
Je veux récupérer les informations qui sont extraites par cette classe, et les afficher une par une dans mon interface :)
0
MTP85 Messages postés 12 Date d'inscription mardi 18 mars 2008 Statut Membre Dernière intervention 6 juin 2010
6 mai 2010 à 14:40
Y a personne pour m'"aider ? :(
0
maximelien Messages postés 40 Date d'inscription jeudi 22 janvier 2009 Statut Membre Dernière intervention 23 juin 2010
6 mai 2010 à 16:29
J'avais pas vu la notification de ton message....

Et bien, rapidement d'après ce que j'ai compris, pour extraire et afficher des valeurs de ta class HTMLParseLister déjà il te faut :

1 - Déclarer des variables (en private ou protected si tu pense l'utiliser comme super class) dans ta class HTMLParseLister qui stockeront les valeurs que tu veux passer à ton IHM

2 - créer des Getters et Setters pour récupérer ou modifier les variables de class HTMLParseLister

3 - Créer ton IHM (une class à part)

4 - Instancier cette class HTMLParseLister dans l'IHM (et au besoin, spécifier le package ou fait un Import )

Attention car dans cette class tu as la méthode main, cette méthode est static.. Cf : mercredi 5 mai 2010 à 17:48:00 | Re : java http://www.javafr.com/forum/sujet-JAVA_1433554.aspx

Je rappel le code balisé Java pour que ce soit plus clair et lisible :


import java.io.Reader;
import javax.swing.text.MutableAttributeSet;
import javax.swing.text.html.HTML;
import javax.swing.text.html.HTMLEditorKit;
import javax.swing.text.html.parser.ParserDelegator;

class HTMLParseLister extends HTMLEditorKit.ParserCallback {
    int td 1, tr 0;
    public void handleStartTag(HTML.Tag t, MutableAttributeSet a, int pos) {
        if (t.toString().equals("tr")) {
            System.out.println();
            tr++;
        }
        if (t.toString().equals("td")) {
            td++;
        }
    }

    public void handleText(char[] data, int pos) {
        System.out.print(data);
        System.out.print(" ");
    }

    class Main {

        public static void main(String[] args) {
            Reader r;
            String spec = "l'adresse de la page http";
            try {
                r = new FileReader(spec);
                HTMLEditorKit.Parser parser;
                System.out.println(" Le parcours de la page " + spec);
                parser = new ParserDelegator();
                parser.parse(r, new HTMLParseLister(), true);
                r.close();
            } catch (Exception e) {
                System.out.println("Error: " + e);
                e.printStackTrace();
            }
        }
    }
}
0

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

Posez votre question
maximelien Messages postés 40 Date d'inscription jeudi 22 janvier 2009 Statut Membre Dernière intervention 23 juin 2010
6 mai 2010 à 16:32
Ça te semble clair ? Ça répond à ton problème ?
0
MTP85 Messages postés 12 Date d'inscription mardi 18 mars 2008 Statut Membre Dernière intervention 6 juin 2010
6 mai 2010 à 22:46
Merci pour ta réponse :) Mais le probleme, c'est que ma classe HTMLParser affiche toutes les informations ensemble, comment je fais pour les mettre chacune dans une variable à part ??
0
maximelien Messages postés 40 Date d'inscription jeudi 22 janvier 2009 Statut Membre Dernière intervention 23 juin 2010
7 mai 2010 à 01:24
Il faut que tu déclares tes variables dans la class, en dehors d'une méthode.

Par exemple :

class HTMLParseLister extends HTMLEditorKit.ParserCallback {
    int td 1, tr  0;
//***ICI>
     private String taVariable = null;  //Je prends le cas d'un string car tu veux afficher
//***
//...
//***ICI>
//Ton constructeur (fictif car comme tu n'en as pas mis, il celui ci est généré automatiquement comme ci-dessous)
HTMLParseLister()
{
}
//***
//...


    class Main {
        public static void main(String[] args) {
            //***ICI>
            //Tu déclare ton objet (il faudra le passer en argument pour l'utiliser dans une autre classe)
            HTMLParseLister tonHTMLPars  = new HTMLParseLister();
            //***
            Reader r;
            String spec = "l'adresse de la page http";
            try {
                r = new FileReader(spec);
                HTMLEditorKit.Parser parser;
                //***ICI>
                //ICI tu met tes valeurs dans ta variable String
                tonHTMLPars.setTaVariable(" Le parcours de la page " + spec);
                //Et tu peux l'afficher comme tu veux.
                System.out.println(tonHTMLPars.getTaVariable());
                //***
                parser = new ParserDelegator();
                parser.parse(r, new HTMLParseLister(), true);
                r.close();
            } catch (Exception e) {
                System.out.println("Error: " + e);
                e.printStackTrace();
            }
        }
    }

//***ICI>
//Avec le getter tu récupères la valeur de ta variable dans toute classe ou la classe courante est instanciée
   String getTaVariable(){
       return this.taVariable;
   }
//Avec le setter tu édite la valeur de ta variable dans toute classe ou la classe courante est instanciée
   String setTaVariable(taVariable){
       this.taVariable=taVariable;
   }
//***
}


Nota :

Pour la modification de String, lorsque tu fais :
tonString=" machin " + bidule;
, ca revient au même que de faire
tonString=tonStringBuffer.append(" machin ").append(bidule.toString()).toString;


Sauf que dans ce cas tu ré-alloues un nouvel espace mémoire à chaque modification de tonString et donc ca consomme plus en taille mémoire et si tu as des contraintes de performance, ca va appeler plus souvent le garbage collector (gc) de la JVM et donc prendre de la ressource processeur.

Le mieux est d'utiliser la forme tonStringBuffer lorsque tu modifies beaucoup un String :
tonStringBuffer.append(" machin ").append(bidule.toString());

Lorsque tu veux récupérer la valeur "casté" en (String) tu fais :
tonStringBuffer.toString();
0
maximelien Messages postés 40 Date d'inscription jeudi 22 janvier 2009 Statut Membre Dernière intervention 23 juin 2010
7 mai 2010 à 01:28
Donc tu fais idem pour chaque variable que tu veux. Sauf pour la déclaration de ta class et son constructeur bien sur.

Est ce que ca répond à ton pb ?
0
maximelien Messages postés 40 Date d'inscription jeudi 22 janvier 2009 Statut Membre Dernière intervention 23 juin 2010
7 mai 2010 à 01:30
Erratum :
//***ICI>
[u ] private String taVariable = null; /u //Je prends le cas d'un string car tu veux afficher
//***
0
MTP85 Messages postés 12 Date d'inscription mardi 18 mars 2008 Statut Membre Dernière intervention 6 juin 2010
28 mai 2010 à 18:49
Merci pour toutes ces réponses, mais je crois qu'il y a un probleme avec Parser, ça affiche les informations et c'est tout avec un System.out.printl et je peux pas récuperer ces informations et les mettre dans des variables pour les afficher dans mon application. Y a pas une solution qui me permet de se connecter à l'interface du rooter 192.168.1.1 et qui me permet d'extraires les informations dont j'ai besoin ensuite les mettre dans une interface graphique que je crée ??? SVP je suis dans une impasse et j'ai vraiment besoin d'aide, c'est très urgent.
0
Rejoignez-nous