JEditorPane

Résolu
cs_anzize Messages postés 41 Date d'inscription lundi 10 février 2003 Statut Membre Dernière intervention 9 juin 2005 - 19 mars 2005 à 13:48
cs_anzize Messages postés 41 Date d'inscription lundi 10 février 2003 Statut Membre Dernière intervention 9 juin 2005 - 26 mars 2005 à 10:47
Bnojour tout le monde !

J'ai un petit soucis avec un JEditorPane (ou même un JTextPane).
Ayant implementé HyperlinkListener, les liens html fonctionnent bien..
LE seul truc, c'est que je voudrais que mes pages soient ouvertes à partir d'IE ou Netscape mais pas dans le même JEditorPane (je ne veux pas de monJEditorPane.setPage() mais plutôt d'un monNavigateur.afficherLaPageHTML() ).

Merci pour vote aide !

6 réponses

cs_Yenapa Messages postés 67 Date d'inscription samedi 12 juillet 2003 Statut Membre Dernière intervention 26 juin 2009
21 mars 2005 à 18:37
Salut

J'avais trouvé ca sur le net mais je ne sais plus ou... en tout cas merci a son auteur, c'est bien utile

T'a plus qu'a faire un displayURL("www.google.fr") par exemple. (Ca marche sous windows c'est sur. Sous linux et mac normallement ca tourne mais g pas testé)

public static void displayURL(String url)
{
boolean windows = isWindowsPlatform();
String cmd = null;
try
{
if (windows)
{
// cmd = 'rundll32 url.dll,FileProtocolHandler http://...'
cmd = WIN_PATH + " " + WIN_FLAG + " " + url;
Process p = Runtime.getRuntime().exec(cmd);
}
else
{
// Under Unix, Netscape has to be running for the "-remote"
// command to work. So, we try sending the command and
// check for an exit value. If the exit command is 0,
// it worked, otherwise we need to start the browser.
// cmd = 'netscape -remote openURL(http://www.javaworld.com)'
cmd = UNIX_PATH + " " + UNIX_FLAG + "(" + url + ")";
Process p = Runtime.getRuntime().exec(cmd);
try
{
// wait for exit code -- if it's 0, command worked,
// otherwise we need to start the browser up.
int exitCode = p.waitFor();
if (exitCode != 0)
{
// Command failed, start up the browser
// cmd = 'netscape http://www.javaworld.com'
cmd = UNIX_PATH + " " + url;
p = Runtime.getRuntime().exec(cmd);
}
}
catch(InterruptedException x)
{
System.err.println("Error bringing up browser, cmd='" +
cmd + "'");
System.err.println("Caught: " + x);
}
}
}
catch(java.io.IOException x)
{
// couldn't exec browser
System.err.println("Could not invoke browser, command=" + cmd);
System.err.println("Caught: " + x);
}
}
/**
* Try to determine whether this application is running under Windows
* or some other platform by examing the "os.name" property.
*
* @return true if this application is running under a Windows OS
*/
public static boolean isWindowsPlatform()
{
String os = System.getProperty("os.name");
if ( os != null && os.startsWith(WIN_ID))
return true;
else
return false;

}


// Used to identify the windows platform.
private static final String WIN_ID = "Windows";
// The default system browser under windows.
private static final String WIN_PATH = "rundll32";
// The flag to display a url.
private static final String WIN_FLAG = "url.dll,FileProtocolHandler";
// The default browser under unix.
private static final String UNIX_PATH = "netscape";
// The flag to display a url.
private static final String UNIX_FLAG = "-remote openURL";
3
cs_anzize Messages postés 41 Date d'inscription lundi 10 février 2003 Statut Membre Dernière intervention 9 juin 2005
25 mars 2005 à 23:46
Hello everybody !

J'ai trouvé un truc simple et génial (ce qui est génial est svt tout simple mais le contraire n'est pas forcemment vrai).

public void hyperlinkUpdate(HyperlinkEvent e) {
if (e.getEventType() == HyperlinkEvent.EventType.ACTIVATED) {
JEditorPane pane = (JEditorPane) e.getSource();
if (e instanceof HTMLFrameHyperlinkEvent) {
HTMLFrameHyperlinkEvent evt = (HTMLFrameHyperlinkEvent)e;
HTMLDocument doc = (HTMLDocument)pane.getDocument();
doc.processHTMLFrameHyperlinkEvent(evt);
} else {
try {
getAppletContext().showDocument (u,"_targetnavigateurWeb");
}
catch (Throwable t) {t.printStackTrace();}

}
catch (Throwable t) {t.printStackTrace();}
}
}
}

Pas belle la vie ?
3
cs_Yenapa Messages postés 67 Date d'inscription samedi 12 juillet 2003 Statut Membre Dernière intervention 26 juin 2009
21 mars 2005 à 19:41
Voici aussi ma methode hyperlinkUpdate, ca peut t'etre utile:

public void hyperlinkUpdate(HyperlinkEvent e) {
//System.out.println("Hyperactivé :D");
if (e.getEventType() == HyperlinkEvent.EventType.ACTIVATED) {
try {
displayURL(e.getURL().toString());
} catch (Throwable t) {
t.printStackTrace();
}
}
}
0
cs_anzize Messages postés 41 Date d'inscription lundi 10 février 2003 Statut Membre Dernière intervention 9 juin 2005
22 mars 2005 à 12:47
Je vais essayer ta solution maintenant !
En tout cas merci beaucoup car je commencçais à desesperer ! Merci énormeemnt !
Az"
0

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

Posez votre question
cs_Yenapa Messages postés 67 Date d'inscription samedi 12 juillet 2003 Statut Membre Dernière intervention 26 juin 2009
26 mars 2005 à 09:25
Et ca donne quoi?
Ca marche aussi si t pas dans une applet?
0
cs_anzize Messages postés 41 Date d'inscription lundi 10 février 2003 Statut Membre Dernière intervention 9 juin 2005
26 mars 2005 à 10:47
Hi !
Ca marche trop bien (seulement pour une applet à cause de getAppletContext()). Ca m'évite d'aller détecter le systeme du client puis de me servir d'un fichier dll ce qui signifie qu'il faut que mon applet ait l'autorisation de le faire.
Par contre avec cette méthode, que ce soit avec n'importe quel system, ça marche san probleme.

Il fo dire que ça ne marche que si ton applet est lancée à partir d'un navigateur et non de l'applet viewer. Pour une appli normale, ça ne marche pas du tout et je pense que c'est la méthode que tu as donnée auparavant qui doit s'appliquer !
0
Rejoignez-nous