2009-07-29 3 views
1

Ich muss Text aus einer Quelle als einfachen Text nehmen und es in einem JTextPane oder JEditorPane anzeigen. Der Quelltext ist kein HTML, sondern enthält URLs in eckigen Klammern, die angezeigt werden müssen und als Hyperlinks fungieren.Anzeige von Links in Java JTextPane ohne HTML

Ich habe darüber nachgedacht, den Inhaltstyp des Bereichs auf text/html zu setzen und die URL in html-Tags zu umgeben, aber das ignoriert die Zeilenumbruchzeichen, was eine schlechte Sache ist, und ich bin mir nicht sicher, wie ich das ersetzen soll Zeilenumbrüche mit "<br/>". Kann man das leicht machen?

Wenn dies bedeutet Scannen durch die gesamte Zeichenfolge wäre es nicht besser, nur anpassen, wie der Text angezeigt wird?

Also habe ich auch die Route, die mit der Erstellung meiner eigenen EditorKit wie starturtle Erwähnungen in this thread beinhaltet, aber er erklärt nicht, wie es geht. Ich habe über den Code in this article geschaut, aber es scheint wie eine Menge Arbeit, ist dies die Route, die ich nehmen sollte?

Hat jemand das jemals getan. Irgendwelche Empfehlungen? Ist es besser, in HTML zu konvertieren oder das Display anzupassen?

Antwort

2

ich bin nicht sicher, wie über das Ersetzen Zeilenumbrüche mit „< br/>“ zu gehen. Kann man das leicht machen?

Sie können mit Java regex tun:

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

ich mir die Freiheit geben Sie Ihre HTML-Wrapper in für Sie getroffen haben.


edit:

Für den Spaß an der Sache habe ich Oscars Punkt genommen und nahm einen Stich:

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

+1 @Victor: Das ist richtig. Die Verarbeitung der Hyperlinks sollte sehr ähnlich sein: Ersetzen Sie [] durch OscarRyz

+0

Ich hatte versucht, die Zeichenfolge ersetzen und das hat nicht funktioniert. das funktioniert dank. – Victor