Afficher une page html dans une application java

Résolu
cs_dragon Messages postés 2336 Date d'inscription samedi 14 juillet 2001 Statut Membre Dernière intervention 5 mai 2009 - 29 oct. 2004 à 18:04
 regis - 24 févr. 2016 à 14:11
je me souviens pus du composant exact, mais si ma mémoire est bonne, il me semble dans un composant, genre jTextField on pouvait afficher le contenu d'une page html (pas le code, mais la page)

me souviens pus comment non plus, quelqu'un peu me rafraichir la mémoire ???
-------------------------------------------------
Dragon alias aussi Waxime mais bon, pas le gout de refaire un nouveau profil lol
-------------------------------------------------

12 réponses

Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
29 oct. 2004 à 18:53
hello,

le composant tu peux prendre JTextPane en utilisant un HTMLEditorKit du package javax.swing.text.html.*

pour l'utilisation c un truc du gout

HTMLEditorKit htmlEK = new HTMLEditorKit();
DefaultStyledDocument doc = new DefaultStyledDocument();
public JTextPane textpane;

....
textpane.setContentType("text/html");
textpane.setEditorKit(htmlEK);
....

mais ICI tu auras bien plus d'info
3
cs_AbriBus Messages postés 492 Date d'inscription jeudi 28 août 2003 Statut Membre Dernière intervention 25 avril 2007 5
30 oct. 2004 à 21:10
je vien de vérifier, ca marche aussi avec les JEditorPane (c'est peut etre moins 'propre' je sais pas...)

si ca peux aider...:

import javax.swing.*;
import java.net.*;
import java.awt.*;
import javax.swing.event.*;

public class TestUrl 
{
private static JEditorPane JTest = new JEditorPane();

public static void main(String[] args) 
{
try
{
JFrame Browser = new JFrame("Test");
BorderLayout Bl = new BorderLayout();
JScrollPane ScrollMe;
HyperlinkListener HlListener;
Browser.getContentPane().setLayout(Bl);
URL UrlTest = new URL("http://www.yahoo.com");
JTest.setPage(UrlTest);
JTest.setEditable(false);
JTest.addHyperlinkListener(HlListener = new HLList());
Browser.getContentPane().add(ScrollMe = new JScrollPane(JTest), BorderLayout.CENTER);
Browser.pack();
Browser.setVisible(true);
}
catch(Exception e)
{
System.out.println(e.getMessage());
}
}
public static void Browse(URL Destination)
{
try
{
JTest.setPage(Destination);
}
catch(Exception e)
{
System.out.println(e.getMessage());
System.out.println(Destination);
}
}
}
class HLList implements HyperlinkListener
{
public void hyperlinkUpdate(HyperlinkEvent e)
{
if(e.getEventType() == HyperlinkEvent.EventType.ACTIVATED)
{
TestUrl.Browse(e.getURL());
}
}
}

3
cs_dragon Messages postés 2336 Date d'inscription samedi 14 juillet 2001 Statut Membre Dernière intervention 5 mai 2009 6
2 nov. 2004 à 22:15
c est beau, j,ai trouver

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.net.URL;

import javax.swing.ImageIcon;
import javax.swing.JEditorPane;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.event.HyperlinkEvent;
import javax.swing.event.HyperlinkListener;

/**
 * Title: 

 *
 * Description: 

 *
 * Copyright: Copyright (c) 2004

 *
 * Company: 

 *
 * @author not attributable
 * @version 1.0
 */
public class ecran extends JFrame {
    BorderLayout borderLayout1 = new BorderLayout();
    JMenuBar jMenuBar1 = new JMenuBar();
    JMenu jMenu1 = new JMenu();
    JMenuItem jMenuItem1 = new JMenuItem();
    JMenuItem jMenuItem2 = new JMenuItem();
    JMenu jMenu2 = new JMenu();
    JMenuItem jMenuItem3 = new JMenuItem();
    JMenuItem jMenuItem4 = new JMenuItem();
    JLabel jLabel1 = new JLabel();
    JPanel jPanelImage = new JPanel();
    JPanel jPanelHTML = new JPanel();
    private static JEditorPane matiereHTML = new JEditorPane();
    private static JEditorPane fichierHTML = new JEditorPane();

    ImageIcon fond;
    
    public ecran() {
    	this.setSize(1100,800);
        try {
            jbInit();
        } catch (Exception exception) {
            exception.printStackTrace();
        }
        this.show();
    }

    private void jbInit() throws Exception {
    	jPanelHTML.setLayout(borderLayout1);
        this.setDefaultCloseOperation(EXIT_ON_CLOSE);
        this.setJMenuBar(jMenuBar1);
        this.setResizable(false);
        jMenu1.setText("Fichier");
        jMenuItem1.setText("Ouvrir");
        jMenuItem1.addActionListener(new ecran_jMenuItem1_actionAdapter(this));
        jMenuItem2.setText("Quitter");
        jMenuItem2.addActionListener(new ecran_jMenuItem2_actionAdapter(this));
        jMenu2.setText("Visualiser");
        jMenuItem3.setText("table des matières");
        jMenuItem4.setText("Fichier");
        jMenuBar1.add(jMenu1);
        jMenuBar1.add(jMenu2);
        jMenu1.add(jMenuItem1);
        jMenu1.add(jMenuItem2);
        jMenu2.add(jMenuItem3);
        jMenu2.add(jMenuItem4);
        
        fond = new ImageIcon("XmlXls.gif");
        
        jPanelImage.setSize(fond.getIconWidth(),fond.getIconHeight());
        jPanelImage.setLocation(this.getWidth() / 2 - jPanelImage.getWidth() / 2, this.getHeight() / 2 - jPanelImage.getHeight() / 2);
        
        jPanelHTML.setSize(this.getSize());
        
        this.jLabel1.setIcon(fond);
        jPanelImage.add(jLabel1);
        
        this.getContentPane().add(jPanelImage);
        
        matiereHTML.setPage("http://www.etsmtl.ca/");
        matiereHTML.setEditable(false);
        matiereHTML.addHyperlinkListener(new HLList());
        
        fichierHTML.setPage("http://www.etsmtl.ca/zone2/departements/logti/index.html");
        fichierHTML.setEditable(false);
        fichierHTML.addHyperlinkListener(new HLList());
         
        matiereHTML.setPreferredSize(new Dimension((int)(jPanelHTML.getWidth() * 0.25),jPanelHTML.getHeight()));
        fichierHTML.setPreferredSize(new Dimension(jPanelHTML.getWidth() - (int)(jPanelHTML.getWidth() * 0.25),jPanelHTML.getHeight()));
        
        jPanelHTML.add(new JScrollPane(fichierHTML) ,BorderLayout.CENTER);
        jPanelHTML.add(new JScrollPane(matiereHTML) , BorderLayout.EAST);
        
        HTMLVisible(false);
        
        this.setIconImage(fond.getImage());
        this.getContentPane().add(jPanelHTML);
    }

    public void jMenuItem2_actionPerformed(ActionEvent e) {
        System.exit(0);
    }

    public void jMenuItem1_actionPerformed(ActionEvent e) {
         JFileChooser fichier = new JFileChooser();
         fichier.setMultiSelectionEnabled(false);
         fichier.showOpenDialog(this);
         if (fichier.getSelectedFile() == null){
         	HTMLVisible(false);
         }else{
         	HTMLVisible(true);
         }
    }
    
    public void HTMLVisible(boolean visible){
    	if (visible){
         	jPanelImage.setVisible(false);
         	jPanelHTML.setVisible(true);
         }else{
         	jPanelImage.setVisible(true);
         	jPanelHTML.setVisible(false);
         }
    }
    
    public static void Browse(URL Destination)
    {
    try
    {
    	matiereHTML.setPage(Destination);
    }
    	catch(Exception e)
    {
    System.out.println(e.getMessage());
    System.out.println(Destination);
    }
    }
}

class ecran_jMenuItem1_actionAdapter implements ActionListener {
    private ecran adaptee;
    ecran_jMenuItem1_actionAdapter(ecran adaptee) {
        this.adaptee = adaptee;
    }

    public void actionPerformed(ActionEvent e) {
        adaptee.jMenuItem1_actionPerformed(e);
    }
}

class ecran_jMenuItem2_actionAdapter implements ActionListener {
    private ecran adaptee;
    ecran_jMenuItem2_actionAdapter(ecran adaptee) {
        this.adaptee = adaptee;
    }

    public void actionPerformed(ActionEvent e) {
        adaptee.jMenuItem2_actionPerformed(e);
    }
}

class HLList implements HyperlinkListener
{
public void hyperlinkUpdate(HyperlinkEvent e)
{
if(e.getEventType() == HyperlinkEvent.EventType.ACTIVATED)
{
ecran.Browse(e.getURL());
}
}
}

-------------------------------------------------
Dragon alias aussi Waxime mais bon, pas le gout de refaire un nouveau profil lol
-------------------------------------------------
3
cs_AbriBus Messages postés 492 Date d'inscription jeudi 28 août 2003 Statut Membre Dernière intervention 25 avril 2007 5
2 nov. 2004 à 19:39
Tient voila je t'ai refait le code avec un JScrollPane, c'etait pas bien compliqué... :)
import javax.swing.*;
import java.net.*;
import java.awt.*;
import javax.swing.event.*;

public class LitleBrow extends JFrame
{
private static JEditorPane JTest = new JEditorPane();

public void main(String[] args) 
{
try
{
BorderLayout Bl = new BorderLayout();
JScrollPane ScrollMe;
HyperlinkListener HlListener;
this.getContentPane().setLayout(Bl);
URL UrlTest = new URL("http://tcaminade.servehttp.com/tsturl/page1.htm");
JTest.setPage(UrlTest);
JTest.setEditable(false);
JTest.addHyperlinkListener(HlListener = new HLList());
this.getContentPane().add(ScrollMe = new JScrollPane(JTest), BorderLayout.CENTER);
this.pack();
this.setVisible(true);
}
catch(Exception e)
{
System.out.println(e.getMessage());
}
}
public void Browse(URL Destination)
{
try
{
JTest.setPage(Destination);
}
catch(Exception e)
{
System.out.println(e.getMessage());
System.out.println(Destination);
}
}
}
class HLList implements HyperlinkListener
{
public void hyperlinkUpdate(HyperlinkEvent e)
{
if(e.getEventType() == HyperlinkEvent.EventType.ACTIVATED)
{
XMachine.BrowMe(e.getURL());
}
}
}
1

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

Posez votre question
cs_AbriBus Messages postés 492 Date d'inscription jeudi 28 août 2003 Statut Membre Dernière intervention 25 avril 2007 5
30 oct. 2004 à 21:11
je vien de vérifier, ca marche aussi avec les JEditorPane (c'est peut etre moins 'propre' je sais pas...)

si ca peux aider...:

import javax.swing.*;
import java.net.*;
import java.awt.*;
import javax.swing.event.*;

public class TestUrl 
{
private static JEditorPane JTest = new JEditorPane();

public static void main(String[] args) 
{
try
{
JFrame Browser = new JFrame("Test");
BorderLayout Bl = new BorderLayout();
JScrollPane ScrollMe;
HyperlinkListener HlListener;
Browser.getContentPane().setLayout(Bl);
URL UrlTest = new URL("http://www.yahoo.com");
JTest.setPage(UrlTest);
JTest.setEditable(false);
JTest.addHyperlinkListener(HlListener = new HLList());
Browser.getContentPane().add(ScrollMe = new JScrollPane(JTest), BorderLayout.CENTER);
Browser.pack();
Browser.setVisible(true);
}
catch(Exception e)
{
System.out.println(e.getMessage());
}
}
public static void Browse(URL Destination)
{
try
{
JTest.setPage(Destination);
}
catch(Exception e)
{
System.out.println(e.getMessage());
System.out.println(Destination);
}
}
}
class HLList implements HyperlinkListener
{
public void hyperlinkUpdate(HyperlinkEvent e)
{
if(e.getEventType() == HyperlinkEvent.EventType.ACTIVATED)
{
TestUrl.Browse(e.getURL());
}
}
}

0
cs_dragon Messages postés 2336 Date d'inscription samedi 14 juillet 2001 Statut Membre Dernière intervention 5 mai 2009 6
31 oct. 2004 à 01:33
oki, merci vous 2

-------------------------------------------------
Dragon alias aussi Waxime mais bon, pas le gout de refaire un nouveau profil lol
-------------------------------------------------
0
cs_dragon Messages postés 2336 Date d'inscription samedi 14 juillet 2001 Statut Membre Dernière intervention 5 mai 2009 6
2 nov. 2004 à 19:30
bon là ma page s,affiche, mais comment intégré une scroll bar ???

il y aurait une façon sans utiliser l'API, masi j,ai lu sur scrollToReference permettait de le faire, masi j,arrive pas a l'utilisé
-------------------------------------------------
Dragon alias aussi Waxime mais bon, pas le gout de refaire un nouveau profil lol
-------------------------------------------------
0
cs_AbriBus Messages postés 492 Date d'inscription jeudi 28 août 2003 Statut Membre Dernière intervention 25 avril 2007 5
2 nov. 2004 à 19:39
Tient voila je t'ai refait le code avec un JScrollPane, c'etait pas bien compliqué... :)
import javax.swing.*;
import java.net.*;
import java.awt.*;
import javax.swing.event.*;

public class LitleBrow extends JFrame
{
private static JEditorPane JTest = new JEditorPane();

public void main(String[] args) 
{
try
{
BorderLayout Bl = new BorderLayout();
JScrollPane ScrollMe;
HyperlinkListener HlListener;
this.getContentPane().setLayout(Bl);
URL UrlTest = new URL("http://tcaminade.servehttp.com/tsturl/page1.htm");
JTest.setPage(UrlTest);
JTest.setEditable(false);
JTest.addHyperlinkListener(HlListener = new HLList());
this.getContentPane().add(ScrollMe = new JScrollPane(JTest), BorderLayout.CENTER);
this.pack();
this.setVisible(true);
}
catch(Exception e)
{
System.out.println(e.getMessage());
}
}
public void Browse(URL Destination)
{
try
{
JTest.setPage(Destination);
}
catch(Exception e)
{
System.out.println(e.getMessage());
System.out.println(Destination);
}
}
}
class HLList implements HyperlinkListener
{
public void hyperlinkUpdate(HyperlinkEvent e)
{
if(e.getEventType() == HyperlinkEvent.EventType.ACTIVATED)
{
XMachine.BrowMe(e.getURL());
}
}
}
0
bonjour
0
cs_AbriBus Messages postés 492 Date d'inscription jeudi 28 août 2003 Statut Membre Dernière intervention 25 avril 2007 5
2 nov. 2004 à 19:44
(je suis desolé pour les doublons... pourtant j'ai appuyé qu'une seule fois sur "Ajouter")...

Sinceres excuses.

Bubus
0
cs_AbriBus Messages postés 492 Date d'inscription jeudi 28 août 2003 Statut Membre Dernière intervention 25 avril 2007 5
2 nov. 2004 à 19:46
...heu... PS2: je vien de m'appercevoir que mon code est le meme que plus haut... ce qui me vient a me demander... n'as tu pas deja des scroll bar avec la source que j'ai postée ?

(encore navré pour la pollution...)

Bubus
0
cs_dragon Messages postés 2336 Date d'inscription samedi 14 juillet 2001 Statut Membre Dernière intervention 5 mai 2009 6
2 nov. 2004 à 21:43
merci, ça fonctionne bien maintenant

dernière petite question, comment on peut fixer la grandeur de la page ??? puisque là j'en affiche 2 sur le même jpanel et les 2 se chevauche, malgré que un est WEST et l'autre est EAST
-------------------------------------------------
Dragon alias aussi Waxime mais bon, pas le gout de refaire un nouveau profil lol
-------------------------------------------------
0
cs_AbriBus Messages postés 492 Date d'inscription jeudi 28 août 2003 Statut Membre Dernière intervention 25 avril 2007 5
2 nov. 2004 à 22:01
si tu as deja fait un Frame.pack(), tu peux toujours essayé un Frame.setSize(x, y) si tu travailles en awt ou un Frame.setDimention(dimention d) ou un Frame.setBounds(x, y, h, l) avec x et y les coordonnées du coin superieur gauche de la fenetre et h et l la hauteur et la largeur de la feuille (tous entier) si tu travailles en swing (JComposant, et comme JEditorPane est un swing, je penses que tu travailles en swing sinon ca fait des erreurs un peu mysterieuses mais vite corrigées).

Si tu veux utiliser le setSize, il faut définir un nouvel objet dimention avec une ligne du genre:

java.awt.Dimension MaDim = new Dimention(int x, int y) avec x et y la largueur et y la hauteur de ta Frame (ou n'importe quoi d'autre).

ensuite, il reste plus qu'a l'appliquer a ta Frame avec la commende setDimention() comme suit:

Frame.setDimention(MaDimention)

A priori, si tu connais la position de depart de ta fenetre, (ex: 0, 0 par defaut pour java) il vaut peut etre mieux utiliser setBounds car ca t'évites de déclarer un objet supplementaire mais bon ca c'est du gout de chacun... la dimention te permet surtout de pouvoir appliquer la meme a toutes les feuilles dans le cadre d'une appli de plusieurs Frames différentes de meme taille.

Wala...

Bubus...
0
Rejoignez-nous