2009-07-29 5 views
1

Je dois prendre le texte d'une source en texte clair et l'afficher dans un JTextPane ou JEditorPane. Le texte source n'est pas du HTML mais contiendra des URL entre crochets qui doivent être affichés et fonctionner comme des hyperliens. J'ai envisagé de définir le type de contenu du volet sur text/html et d'entourer l'URL dans les balises html, mais cela finit par ignorer les caractères de nouvelle ligne, ce qui est une mauvaise chose, et je ne sais pas comment remplacer caractères de nouvelle ligne avec "<br/>". Y at-il un wat facile à faire cela? Si cela implique de parcourir toute la chaîne, ne vaudrait-il pas mieux personnaliser le mode d'affichage du texte?afficher les liens dans le JTextPane de java sans html

J'ai donc également considéré la route qui consiste à faire mon propre EditorKit comme des mentions de starturtle dans this thread, mais il n'explique pas comment le faire. J'ai regardé le code dans this article, mais il semble que beaucoup de travail, est-ce la route que je devrais prendre?

Est-ce que quelqu'un a déjà fait cela? Des recommandations? Est-il préférable de convertir en HTML ou de personnaliser l'affichage?

Répondre

2

je ne suis pas sûr de savoir comment s'y prendre pour remplacer les caractères avec saut de ligne « < br/> ». Y at-il un wat facile à faire cela?

Vous pouvez le faire avec Java regex:

String raw = "..."; 
    Pattern p = Pattern.compile("\n"); 
    String html = "<HTML>" + p.matcher(raw).replaceAll("<BR>") + "</HTML>" ; 

J'ai pris la liberté d'ajouter votre wrapper HTML pour vous.


modifier:

Pour le plaisir, je l'ai pris le point d'Oscar et a pris un coup de poignard:

Pattern p = Pattern.compile("\\[([^\\]]*)\\]"); 
    raw = p.matcher(raw).replaceAll("<a href=\"$1\">$1</a>"); 
+0

+1 @Victor: Ceci est exact. Le traitement des hyperliens devrait être très similaire: remplacer [] par OscarRyz

+0

J'avais essayé la méthode de remplacement de chaîne et cela ne fonctionnait pas. cela fonctionne merci. – Victor

Questions connexes