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 :

JTextPane, URL et Frame


Sujet :

AWT/Swing Java

  1. #1
    Membre confirmé Avatar de philobedo
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2004
    Messages : 80
    Par défaut JTextPane, URL et Frame
    Bojour à tous,
    Comme l'indique le titre je n'arrive pas à ouvrir une page HTML contenant des Frame (3 au total) dans mon JTextPane...
    Voici comment je procède:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    ...
    champPaneHelp = new JTextPane();
    try {
    	urlManuelUtilisateur = new URL("file:/users/abym8335/Linux/tools/DOC/Manuel utilisateur/index.html");
    	champPaneHelp.setPage(urlManuelUtilisateur);
    }
    catch (MalformedURLException me) {
    	me.printStackTrace();
    }
    catch (IOException io) {
    	io.printStackTrace();
    }
    getContentPane().add(champPaneHelp);
    ...
    mais quand j'ouvre ma Frame contenant la page HTML (en fait l'aide en ligne du logiciel), j'obtient l'erreur suivante:
    java.lang.RuntimeException: Can't build aframeset, BranchElement(frameset) 80,158
    :no ROWS or COLS defined.
    at javax.swing.text.html.HTMLEditorKit$HTMLFactory.create(HTMLEditorKit.java:1105)
    at javax.swing.text.CompositeView.loadChildren(CompositeView.java:95)
    at javax.swing.text.CompositeView.setParent(CompositeView.java:122)
    at javax.swing.text.html.BlockView.setParent(BlockView.java:55)
    at javax.swing.text.html.HTMLEditorKit$HTMLFactory$BodyBlockView.setParent(HTMLEditorKit.java:1266)
    at javax.swing.text.CompositeView.replace(CompositeView.java:200)
    at javax.swing.text.BoxView.replace(BoxView.java:164)
    at javax.swing.text.CompositeView.loadChildren(CompositeView.java:97)
    at javax.swing.text.CompositeView.setParent(CompositeView.java:122)
    at javax.swing.text.html.BlockView.setParent(BlockView.java:55)
    at javax.swing.text.CompositeView.replace(CompositeView.java:200)
    at javax.swing.text.BoxView.replace(BoxView.java:164)
    at javax.swing.text.CompositeView.loadChildren(CompositeView.java:97)
    at javax.swing.text.CompositeView.setParent(CompositeView.java:122)
    at javax.swing.text.html.BlockView.setParent(BlockView.java:55)
    at javax.swing.text.html.HTMLEditorKit$HTMLFactory$BodyBlockView.setParent(HTMLEditorKit.java:1266)
    at javax.swing.text.CompositeView.replace(CompositeView.java:200)
    at javax.swing.text.BoxView.replace(BoxView.java:164)
    at javax.swing.text.View.updateChildren(View.java:1126)
    at javax.swing.text.View.insertUpdate(View.java:710)
    at javax.swing.plaf.basic.BasicTextUI$RootView.insertUpdate(BasicTextUI.java:1487)
    at javax.swing.plaf.basic.BasicTextUI$UpdateHandler.insertUpdate(BasicTextUI.java:1726)
    at javax.swing.text.AbstractDocument.fireInsertUpdate(AbstractDocument.java:184)
    at javax.swing.text.DefaultStyledDocument.create(DefaultStyledDocument.java:138)
    at javax.swing.text.html.HTMLDocument.create(HTMLDocument.java:266)
    at javax.swing.text.html.HTMLDocument$HTMLReader.flushBuffer(HTMLDocument.java:3252)
    at javax.swing.text.html.HTMLDocument$HTMLReader.flush(HTMLDocument.java:2074)
    at javax.swing.text.html.HTMLEditorKit.read(HTMLEditorKit.java:231)
    at javax.swing.JEditorPane.read(JEditorPane.java:504)
    at javax.swing.JEditorPane.read(JEditorPane.java:522)
    at javax.swing.JEditorPane$PageLoader.run(JEditorPane.java:551)
    Existe t-il un moyen pour afficher une page HTML avec des frames dans un EditorPane ?

    Merci
    ++
    Philobedo

  2. #2
    Membre confirmé Avatar de philobedo
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2004
    Messages : 80
    Par défaut
    Je précise que si je mets l'URL d'une page HTML simple (sans Frame) ça fonctionne trés bien...

  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
    Tu peut essayer avec le JTextPane qui gère un peu mieux l'html, mais je te promets rien. Sinon, oriente toi vers le WebBrowser de JDIC.

  4. #4
    Membre confirmé Avatar de philobedo
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2004
    Messages : 80
    Par défaut
    Oups en fait je travaille déja avec un JTextPane... je me suis juste trompé dans le titre.

  5. #5
    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
    Citation Envoyé par philobedo
    Oups en fait je travaille déja avec un JTextPane... je me suis juste trompé dans le titre.
    Ok, donc ca doit pas marcher avec les Frame, donc tu es obligé de passer par le WebBrowser de JDIC.

  6. #6
    Membre confirmé Avatar de philobedo
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2004
    Messages : 80
    Par défaut
    Bon ok, j'aurais voulu éviter (ajouter des nouvelles libs ) mais bon s'il n'y a que ça je vais suivre cette piste.
    Merci wichtounet
    ++
    Philobedo

  7. #7
    Membre confirmé Avatar de philobedo
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2004
    Messages : 80
    Par défaut
    Bon alors finalement après avoir regardé JDIC j'ai pas trouvé ça top!!!
    Trop lourd à mon gout... (avec tous les .so, les bin et autres lib utilies au fonctionnement du projet...)
    Alors j'ai tout simplement recréer ma propre fenêtre de navigation.
    Et pour les frames ben je les ais toutes recréé dans ma fenêtre.
    Je m'explique...
    J'avais une frame entête avec un titre et des images => création d'un JLabel pour le titre et de JLabel avec des setIcon pour les images. Du style:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    lLogoOr = new JLabel();
    	try {
    		urlLogoOr = new URL("file:doc/Manuel utilisateur/design/icone/lLogoOr.jpg");
    		imgLogoOr = new ImageIcon(urlLogoOr);
    		lLogoOr.setIcon(imgLogoOr);
    	}
    	catch (MalformedURLException me) {
    		me.printStackTrace();
    	}
            .......
    J'avais une frame menu => ajout de Label avec détection du passage de la souris (avec changement de couleur, changement du curseur et tout le toutim...) et lorsqu'on clique sur un lien HOP! on change la page affiché dans le JTextPane() (la troisième frame....)!!! Du style:
    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
     
            lAccueil = new JLabel();
    	lAccueil.setText("Accueil");
    	lAccueil.setFont(new Font("Dialog",Font.BOLD,10));
    	lAccueil.setForeground(Color.BLUE);
    	lAccueil.setName("accueil");
    	lAccueil.addMouseListener(this);
    	lAccueil.addMouseMotionListener(this);
     
    	lIntro = new JLabel();
    	lIntro.setText("Introduction");
    	lIntro.setFont(new Font("Dialog",Font.BOLD,10));
    	lIntro.setForeground(Color.BLUE);
    	lIntro.setName("introduction");
    	lIntro.addMouseListener(this);
    	lIntro.addMouseMotionListener(this);
            .....
    Enfin j'avais une troisième frame principale pour l'affichage des données => ajout d'un JTextPane dans lequel s'affiche toutes les pages HTML liés avec le menu à gauche (les JLabels...). Du style:
    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
           .........
           champPaneHelp = new JTextPane();
    	try {
    		urlManuelUtilisateur = new URL("file:doc/Manuel utilisateur/donnees.html");
    		champPaneHelp.setPage(urlManuelUtilisateur);
    	}
    	catch (MalformedURLException me) {
    		me.printStackTrace();
    	}
    	catch (IOException io) {
    		io.printStackTrace();
    	}
             champPaneHelp.setContentType("text/html");
    	champPaneHelp.setFont(new Font("Dialog",Font.BOLD,10));
    	champPaneHelp.setEditable(false);
    	jscrollEd = new JScrollPane(champPaneHelp);
    	JScrollBar jsb = jscrollEd.getVerticalScrollBar();
    	jsb.setValue(jsb.getMaximum());
    Enfin lors du cliq sur un Label du menu de gauche on a:
    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
    public void mouseClicked(MouseEvent mEvt) {
    	String event = ((Component) mEvt.getSource()).getName();
    	if (event.equals("accueil")) {
    		try {
    			urlManuelUtilisateur = new URL("file:doc/Manuel utilisateur/donnees.html");
    			champPaneHelp.setPage(urlManuelUtilisateur);
    		}
    		catch (MalformedURLException me) {
    			me.printStackTrace();
    		}
    		catch (IOException io) {
    			io.printStackTrace();
    		}
    	}
    	else if (event.equals("introduction")) {
    		try {
    			urlManuelUtilisateur = new URL("file:doc/Manuel utilisateur/introduction.html");
    			champPaneHelp.setPage(urlManuelUtilisateur);
    		}
    		catch (MalformedURLException me) {
    			me.printStackTrace();
    		}
    		catch (IOException io) {
    			io.printStackTrace();
    		}
    	}
            .................
    }
    Bien sur tous ces composants sont disposé sur la fenêtre à l'aide de Box horizontale et verticale.

    Alors OK c'est pas une solution en économie de travail... MAis au moins je suis arrivé à faire ce que je veux (somme toute assez rapidement) pour un aspect graphique pas pourave du tout!!

    Je vais donc marquer le sujet comme résolu mais ce n'est qu'une "résolution subsidiaire" du problème (j'me comprends )
    Merci à vous
    ++
    Philobedo

  8. #8
    Membre confirmé Avatar de philobedo
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2004
    Messages : 80
    Par défaut
    Ah j'oubliais pour ma part un des plus gros bémol à ma solution est la gestion des css...
    En effet les JTextPane ne gère pas ça correctement...
    ++
    Philobedo

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 8
    Dernier message: 13/03/2007, 09h40
  2. JTextPane avec URL
    Par Gougou dans le forum Composants
    Réponses: 2
    Dernier message: 30/08/2005, 01h04
  3. Récupérer url d'une autre fenêtre contenant des frames
    Par coolhead dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 18/08/2005, 10h12
  4. Réponses: 2
    Dernier message: 17/06/2005, 16h56
  5. [debutant] recuperer l'url d'une frame
    Par sidero dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 26/04/2005, 11h52

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