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

NetBeans Java Discussion :

difference jFrame / applet


Sujet :

NetBeans Java

  1. #1
    Membre éclairé Avatar de ABN84
    Inscrit en
    Octobre 2007
    Messages
    410
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Octobre 2007
    Messages : 410
    Par défaut difference jFrame / applet
    bonjour,
    j'ai changé un jframe en applet.
    au passage l'initialisation du jTree ne marche plus.
    j'initialise comme suit:
    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
    try {
                dbf = DocumentBuilderFactory.newInstance();
                db = dbf.newDocumentBuilder();
                java.net.URL url=getClass().getResource("/material/mat.xml");
                doc = db.parse(url.openStream());
            } catch (java.io.IOException e1) {
                JOptionPane.showMessageDialog(null,"Failed to read XML file:\n"+e1.getMessage());
                return;
            } catch (SAXException e2) {
                JOptionPane.showMessageDialog(null,"Failed to parse XML file:\n"+e2.getMessage());            
                return;
            } catch (ParserConfigurationException e3) {
                JOptionPane.showMessageDialog(null,"Parser configuration exception:\n"+e3.getMessage());            
                return;
            }
    dans le programme jFrame, le tree affiche le contenu du fichier mat.xml, mais dans l'applet le tree n'affiche rien.
    comment faire?
    merci

  2. #2
    Membre Expert Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 687
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 687
    Par défaut
    Je dirait qu'il faut remplacer une JFame par une JApplet plutôt qu'une Applet

  3. #3
    Membre éclairé Avatar de ABN84
    Inscrit en
    Octobre 2007
    Messages
    410
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Octobre 2007
    Messages : 410
    Par défaut
    Bah c'est bien un JApplet dont je parle
    à mon avis le probleme vient de là:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
                java.net.URL url=getClass().getResource("/material/mat.xml");
                doc = db.parse(url.openStream());
    mais je ne vois pas comment reparer.

  4. #4
    Membre éclairé Avatar de ABN84
    Inscrit en
    Octobre 2007
    Messages
    410
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Octobre 2007
    Messages : 410
    Par défaut
    bonsoir,
    quelcun aurait-il une petite idée?
    merci

  5. #5
    Expert confirmé


    Profil pro
    Inscrit en
    Mai 2003
    Messages
    3 240
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 3 240
    Par défaut
    il est placé où cet xml ? dans le jar ?

  6. #6
    Membre éclairé Avatar de ABN84
    Inscrit en
    Octobre 2007
    Messages
    410
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Octobre 2007
    Messages : 410
    Par défaut
    non,
    il est sous un dossier à la meme racine que le jar nommé material:
    dossier racine\inflection.jar
    dossier racine\material\mat.xml

  7. #7
    Expert confirmé


    Profil pro
    Inscrit en
    Mai 2003
    Messages
    3 240
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 3 240
    Par défaut
    Ben, c'est là le problème pour l'applet.
    Puisque l'applet est téléchargée depuis le réseau en local, le fichier xml n'est du coup pas dans le classloader et cela ne fonctionne plus.

    Par contre, avec une JFrame, tu dois certainement dire que le dossier courant fait partie du classpath. Et du coup le xml est bien chargé.

    Vincent

  8. #8
    Membre éclairé Avatar de ABN84
    Inscrit en
    Octobre 2007
    Messages
    410
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Octobre 2007
    Messages : 410
    Par défaut
    Ben, c'est là le problème pour l'applet.
    ok! dans ce cas, si j'inclus le xml dans le jar, comme l'appeler pour initialiser le tree?

    merci;

  9. #9
    Membre éclairé Avatar de ABN84
    Inscrit en
    Octobre 2007
    Messages
    410
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Octobre 2007
    Messages : 410
    Par défaut
    lorsque le xml etait juste à coté du jar (dans le meme repertoire), je l'appelais ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    doc = db.parse("mat.xml");
    comment l'appeler alors à present si je le mets à l'interieur du jar?

    merci

  10. #10
    Membre éclairé

    Profil pro
    Coach Agile
    Inscrit en
    Décembre 2005
    Messages
    316
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Coach Agile

    Informations forums :
    Inscription : Décembre 2005
    Messages : 316
    Par défaut
    Un petit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    doc = db.parse(getClass().getResource("mat.xml"));
    devrait fonctionner.

  11. #11
    Membre éprouvé
    Avatar de Valère
    Profil pro
    Inscrit en
    Août 2005
    Messages
    1 334
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Août 2005
    Messages : 1 334
    Par défaut
    Bonjour,

    Pour plus de précisions, cet article de la FAQ!

    Valère

  12. #12
    Membre éclairé Avatar de ABN84
    Inscrit en
    Octobre 2007
    Messages
    410
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Octobre 2007
    Messages : 410
    Par défaut
    helas non,
    ça m'indique un type incompatible:
    found: javax.xml.parser.document builder.parse
    required: org.w3c.dom.document
    Si j'ecrit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    doc = db.parse(getClass().getResource("mat.xml").openStream());
    il n'y a plus d'erreur de compilation, mais le jar ne se lance plus.

  13. #13
    Membre éclairé Avatar de ABN84
    Inscrit en
    Octobre 2007
    Messages
    410
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Octobre 2007
    Messages : 410
    Par défaut
    bonsoir,
    Par contre, avec une JFrame, tu dois certainement dire que le dossier courant fait partie du classpath. Et du coup le xml est bien chargé.
    meme pas.
    il suffit que le xml soit dans le meme dossier que le jar pour que son contenu s'affiche dans le tree.

    j'ai googlé un peu pour voir comment appeler un fichier qui se trouve à l'interieur d'un jar et je suis tombé sur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    URL url=getClass().getResourceAsStream("mat.xml");
    mais ça donne la meme chose que mon:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    doc = db.parse(getClass().getResource("mat.xml").openStream());
    à savoir que le jar ne se lance plus.
    comment faire? je deviens chevre

    merci

  14. #14
    Expert confirmé


    Profil pro
    Inscrit en
    Mai 2003
    Messages
    3 240
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 3 240
    Par défaut
    De quel type sont db et doc ?

    Vincent

  15. #15
    Membre éclairé Avatar de ABN84
    Inscrit en
    Octobre 2007
    Messages
    410
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Octobre 2007
    Messages : 410
    Par défaut
    bonsoir,
    De quel type sont db et doc ?

    Vincent
    db est de type DocumentBuilder, et doc de type Document:
    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
        private void initializeTree() {
     
            // Read the XML files        
            DocumentBuilderFactory dbf;
            DocumentBuilder db;
            Document doc;
            File file;
            try {
                dbf = DocumentBuilderFactory.newInstance();
                db = dbf.newDocumentBuilder();
                /*java.net.URL url=getClass().getResource("/material/mat.xml");
                doc = db.parse(url.openStream());*/
                doc = db.parse("mat.xml");
            } catch (java.io.IOException e1) {
                JOptionPane.showMessageDialog(null,"Failed to read XML file:\n"+e1.getMessage());
                return;
            } catch (SAXException e2) {
                JOptionPane.showMessageDialog(null,"Failed to parse XML file:\n"+e2.getMessage());            
                return;
            } catch (ParserConfigurationException e3) {
                JOptionPane.showMessageDialog(null,"Parser configuration exception:\n"+e3.getMessage());            
                return;
            }  
     
            doc.getDocumentElement().normalize();        
            NodeList rows = doc.getElementsByTagName("Row");
            // Start at row 2 (1st row is column names,2nd row is empty) 
            root = new FamilyNode("Root");
            for(int i=2;i<rows.getLength();i++)
              addToTree(getRow(rows.item(i)));              
     
            // Initialise the tree model
            matTreeModel = new DefaultTreeModel(root);
            jTree1.setModel(matTreeModel);
            jTree1.setRootVisible(false);
            jTree1.setShowsRootHandles(true);
     
        }    
     
        // Add the specified row to the tree
        private void addToTree(Vector rowItems) {
     
            String family = (String)rowItems.get(0);
     
            // Search if family already exists
            boolean found = false;
            int i=0;
            while(i<root.getChildCount() && !found) {
              found = ( root.getChildAt(i).toString().equalsIgnoreCase(family) ); 
              if(!found) i++;
            }
     
            if(found) {
     
              // Add the material to the family
              FamilyNode curNode = (FamilyNode)root.getChildAt(i);
              MaterialNode newMatNode = new MaterialNode(rowItems);
     
              // Check that the material is not duplicated
              boolean found2 = false;
              int j=0;
              while(j<curNode.getChildCount() && !found2) {
                MaterialNode n = (MaterialNode)curNode.getChildAt(j);
                found2 = n.equals(newMatNode); 
                if(!found2) j++;
              }
              if(!found2) curNode.add(newMatNode);
     
            } else {
     
              // Create the new family
              FamilyNode newNode = new FamilyNode(family);
              newNode.add(new MaterialNode(rowItems));
              root.add( newNode );     
     
            }
     
        }
     
        // Parse a Row and return a vector containing cells.
        private Vector getRow(Node n) {
     
            Vector values = new Vector();
            int curIdx = 1;
     
            NodeList children1 = n.getChildNodes();
            int length1 = children1.getLength();
            for(int i=0;i<length1;i++) {
               Node child1 = children1.item(i);
               if("Cell".equals(child1.getNodeName())) {
     
                 Node indexChild = child1.getAttributes().getNamedItem("ss:Index");
                 if( indexChild!=null ) {
                   try {
                     int newIdx = Integer.parseInt(indexChild.getNodeValue());  
                     // Shift cells
                     for(int k=0;k<newIdx-curIdx;k++)
                        values.add("");
                     curIdx = newIdx;                 
                   } catch( NumberFormatException e) {
                     System.out.println("Warning, incorrect index attribute.");
                   }
                 }
                 NodeList children2 = child1.getChildNodes();
                 int length2 = children2.getLength();
                 for(int j=0;j<length2;j++) {
                   Node child2 = children2.item(j);
                   if("Data".equals(child2.getNodeName())) {
                     values.add(child2.getFirstChild().getNodeValue());
                     curIdx++;
                   }
                 }
     
               }
            }
     
            // Last columns
            for(int k=curIdx;k<=9;k++)
              values.add("");
     
            return values;
        }  
     
        public static void main(String args[]) {
            java.awt.EventQueue.invokeLater(new Runnable() {
                public void run() {
                    new inflectionapplet().setVisible(true);
                }
            });
        }

  16. #16
    Expert confirmé


    Profil pro
    Inscrit en
    Mai 2003
    Messages
    3 240
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 3 240
    Par défaut
    J'aurais voulu avoir le type complet, nom du package inclus.

    Merci.

    Vincent

  17. #17
    Membre éclairé Avatar de ABN84
    Inscrit en
    Octobre 2007
    Messages
    410
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Octobre 2007
    Messages : 410
    Par défaut
    bonjour,
    les voici:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    javax.xml.parsers.DocumentBuilder
    org.w3c.dom.Document

  18. #18
    Expert confirmé


    Profil pro
    Inscrit en
    Mai 2003
    Messages
    3 240
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 3 240
    Par défaut
    Ce serait pas MAT.xml au lieu de mat.xml, puisque d'après tes sources MAT.xml est en majuscule et toi tu recheches un mat.xml en minuscule.

    Et si tu pouvais nous envoyer le contenu du JAr, ce serait bien aussi.

    Vincent

  19. #19
    Membre éclairé Avatar de ABN84
    Inscrit en
    Octobre 2007
    Messages
    410
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Octobre 2007
    Messages : 410
    Par défaut
    bonsoir,
    Ce serait pas MAT.xml au lieu de mat.xml, puisque d'après tes sources MAT.xml est en majuscule et toi tu recheches un mat.xml en minuscule.
    si, mais dans une URL ça ne devrait faire aucune difference.
    Et si tu pouvais nous envoyer le contenu du JAr, ce serait bien aussi.
    je joint le Jar et les sources:
    http://www.sendspace.com/file/y4c1an

    PS: pour essayer l'aplet, j'utilise le fichier inflection.html qui se trouve dans build.

  20. #20
    Expert confirmé


    Profil pro
    Inscrit en
    Mai 2003
    Messages
    3 240
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 3 240
    Par défaut
    Si justement. Dans une URL, ca a son importance !!!!

    Vincent

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. fermer une JFrame qui est lancé par un applet
    Par lucky31 dans le forum Applets
    Réponses: 1
    Dernier message: 14/04/2009, 10h59
  2. Difference entre frame et Jframe ? Button et Jbutton etc ?
    Par Archange21 dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 16/03/2008, 22h58
  3. applet qui ouvre une jframe
    Par jayjay.f dans le forum Agents de placement/Fenêtres
    Réponses: 1
    Dernier message: 01/03/2007, 20h07
  4. applet avec different JRE1.4 et JRE 1.5
    Par nazimb dans le forum Applets
    Réponses: 1
    Dernier message: 22/06/2006, 16h32
  5. [Applet][JFrame]Mouseclick
    Par MarcAn dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 28/04/2006, 00h27

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