Wie fügen Sie einen hyperlink in JLabel?
Welches ist der beste Weg, um einen hyperlink auf jLabel? Ich kann die Ansicht mit html-tags, aber, wie Sie den browser zu öffnen, wenn der Benutzer darauf klickt?
InformationsquelleAutor amit | 2009-02-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie dies tun, indem eine
JLabel
, aber wäre eine alternative-Stil einJButton
. Auf diese Weise müssen Sie nicht haben, um über sorgen Barrierefreiheit und können nur Feuer-Ereignisse mit einemActionListener
.JTextField
wie gezeigt, in den Antwort.Auch text, der nicht Teil des Links können angeklickt werden, um dem link zu Folgen.
InformationsquelleAutor McDowell
Würde ich gerne noch eine andere Lösung. Es ist, ähnlich wie bereits vorgeschlagen, als es nutzt HTML-code in einem JLabel, und registriert einen MouseListener drauf, aber es zeigt auch einen HandCursor, wenn man mit der Maus über den link, so das look&feel ist genau wie das, was die meisten Benutzer erwarten würden. Wenn das surfen ist nicht von der Plattform unterstützten, keine Blaue, unterstrichene HTML-link erstellt wird, die die Gefahr einer Irreführung der Nutzer. Stattdessen der link ist nur dargestellt als plain text.
Dies könnte kombiniert werden mit den SwingLink-Klasse, vorgeschlagen von @dimo414.
eingereicht, die ein Problem in SwingX: java.net/jira/browse/SWINGX-1530 - vielen Dank für das oben Holen 🙂
Du bist herzlich willkommen 🙂 Es scheint, Sie konnte es nicht reproduzieren, das blockierende Verhalten von Desktop.durchsuchen - auf meinem langsamen Rechner, es blockiert sicher, vor allem, wenn der browser noch nicht geöffnet ist.
guter Punkt! Ihren Kommentar zum Thema - fast eher zu schließen, als nicht fix, dein Kommentar hat mich gerettet 🙂
Dies ist eine interessante Lösung. Ich mag, wie es erweitert JLabel - dies bedeutet, dass GroupLayout ist mehr wahrscheinlich, um es zu positionieren, wie ein label, nicht wie ein button. Ich habe festgestellt, dass mithilfe der Tasten scheint, erhöhen Sie den Abstand Sie zwischen den Komponenten...
InformationsquelleAutor Stefan
Schrieb ich einen Artikel über, wie ein hyperlink oder ein mailto auf einem jLabel.
Also einfach ausprobieren es :
Ich denke, das ist genau das, was du bist Suche für.
Hier ist der komplette code Beispiel :
InformationsquelleAutor ibrabelware
Vielleicht verwenden
JXHyperlink
aus SwingX statt. Es erstreckt sichJButton
. Einige nützliche links:InformationsquelleAutor Kaarel
Update ich habe aufgeräumt, die
SwingLink
Klasse weiter und fügte hinzu, mehr Funktionen, eine up-to-date Kopie finden Sie hier: https://bitbucket.org/dimo414/jgrep/src/tip/src/grep/SwingLink.java@Mcdowells Antwort ist toll, aber es gibt einige Dinge, die verbessert werden könnte. Insbesondere anderer text als hyperlink anklickbar ist und es sieht noch immer aus wie ein button, auch wenn einige das styling hat sich verändert/versteckt. Zugänglichkeit ist wichtig, eine schlüssige UI ist so gut.
Also ich habe eine Klasse die JLabel basierend auf mcdowells code. Es ist eigenständig, richtig mit Fehlern umgeht, und fühlt sich mehr wie ein link:
Könnte man auch, zum Beispiel, ändern Sie die link-Farbe von lila nach geklickt haben, wenn das schien sinnvoll. Es ist alles selbst enthalten ist, rufen Sie einfach:
Wenn sich der Mauszeiger wird zu einer hand, wird es sogar noch besser!
werfen Sie einen Blick auf die version verlinkt oben in meiner Antwort, es nutzt
setCursor(new Cursor(Cursor.HAND_CURSOR));
und hat einige weitere Verbesserungen, über die inline-Variante, die in dieser Antwort.InformationsquelleAutor dimo414
Können Sie versuchen, eine JEditorPane, anstatt ein JLabel. Diese versteht einfache HTML und schickt ein HyperlinkEvent event zu den HyperlinkListener Sie sich mit der JEditPane.
InformationsquelleAutor Edward Falk
Wenn <a href="link"> funktioniert nicht, dann:
Haben Sie einen Blick auf java.das awt.Desktop API für das öffnen eines Links unter Verwendung der Standard-browser (der diese API ist nur verfügbar, von Java6).
InformationsquelleAutor Srikanth
Ich weiß, ich bin ein bisschen spät zur party, aber ich machte eine kleine Methode, andere könnten finden, kühlen Sie ab,/nützlich.
Es gebe Ihnen ein JLabel, das wirkt wie eine ordnungsgemäße link.
In Aktion:
Wenn Sie möchten, wird keine QuickInfo senden Sie einfach eine null.
Hoffe jemand findet das nützlich! (Wenn Sie dies tun, achten Sie darauf, lassen mich wissen, ich würde es gerne hören.)
InformationsquelleAutor Meshulam Silk
Verwenden
JEditorPane
mit einemHyperlinkListener
.InformationsquelleAutor Elist
Setzen Sie einfach
window.open(website url)
es funktioniert jedes mal.InformationsquelleAutor thisis fake
Den folgenden code erfordert
JHyperLink
Hinzugefügt werden, um Ihre build-Pfad.Beachten Sie, dass Sie können füllen Sie die
JComponent
array mit mehrSwing
Komponenten.Ergebnis:
InformationsquelleAutor BullyWiiPlaza
Können Sie diese unter einem
oder wenn Sie möchten, verwenden Sie Internet Explorer oder Firefox ersetzen
chrome
mitiexplore
oderfirefox
InformationsquelleAutor Ionutz Asaftei