Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
HomeAnnouncementsWhite Papers
Discussion GroupsFirst AidDatabasesJavaBeansGUIJava 3DVirtual MachineCORBASecurityToolsGeneral
Java DirectoryOpen Source ProjectsSample Book ChaptersUser GroupsWeb Resources
Related Topics
Databases.NETMore Topics ...

Java Forum / General / December 2007

Tip: Looking for answers? Try searching our database.

Clickable link in an application/applet

Thread view: 
Aaron Fude - 28 Dec 2007 17:23 GMT
Hi,

It seems like it would be a common question, but I have not been able
to find a good reference.

I would like to have a clickable URL link in a JLabel. It's OK if the
whole label is a link.

Ideally, the solution is implemented identically if the label is used
in an applet or an application. I would like to be able to specify the
target. The linked page should be displayed by the user's default
browser.

Many thanks in advance!

Aaron Fude
Mark Space - 28 Dec 2007 19:15 GMT
> Hi,
>
[quoted text clipped - 3 lines]
> I would like to have a clickable URL link in a JLabel. It's OK if the
> whole label is a link.

Just use HTML in the JLabel text.

http://java.sun.com/docs/books/tutorial/uiswing/components/label.html

http://java.sun.com/docs/books/tutorial/uiswing/components/html.html
Knute Johnson - 28 Dec 2007 20:01 GMT
> Hi,
>
[quoted text clipped - 12 lines]
>
> Aaron Fude

This will work in an Applet but I'm sure not in an application.  I
remember asking this question years ago but I don't remember the answer
I got.  It may have been better than this one :-).

import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import java.lang.reflect.*;
import java.net.*;
import javax.swing.*;

public class test2 extends JApplet {
    public void init() {
        try {
            EventQueue.invokeAndWait(new Runnable() {
                public void run() {
                    JLabel l = new JLabel("Knute's Website");
                    l.addMouseListener(new MouseAdapter() {
                        public void mousePressed(MouseEvent me) {
                            AppletContext ac =
                             test2.this.getAppletContext();
                            try {
                                ac.showDocument(new URL(
                                 "http://www.knutejohnson.com"));
                            } catch (MalformedURLException murle) {
                                murle.printStackTrace();
                            }
                        }
                    });
                    add(l);
                }
            });
        } catch (InvocationTargetException ite) {
            ite.printStackTrace();
        } catch (InterruptedException ie) {
            ie.printStackTrace();
        }
    }
}

Signature

Knute Johnson
email s/nospam/knute/

Andrew Thompson - 29 Dec 2007 00:58 GMT
...
>It seems like it would be a common question, but I have not been able
>to find a good reference.

It is a common question with no simple, straight forward answer.

>I would like to have a clickable URL link in a JLabel.

What sort of information are you opening in the link?
Is it from the your site?  Do you have control over it?

>..It's OK if the whole label is a link.

This is easy enough with regular label with a MouseListener
attached, the mouseEntered event can be used to show the link
as 'active'.

>Ideally, the solution is implemented identically if the label is used
>in an applet or an application. I would like to be able to specify the
>target.

That makes it tricky.  None of the methods of opening a browser
from an *application* include the option to specify 'target'.

>..The linked page should be displayed by the user's default
>browser.

OK, you ready?

Applet can use the showDocument method, but browsers never
had to implement it, there is no report of success or failure, and
many pop-up killers interfere with it.  It  does allow to specify a
target, which can be ignored by the browser if it chooses.

I would avoid it, if the information in the links is anything more
than trivial.

Applications.

Pre 1.6 applications would have to rely on BrowserLauncher2
(3rd party APIs), while 1.6+ can use the Desktop.browse()
functionality.  Desktop reports success/failure, AFAIR, BL2
throws exceptions if it cannot find(/launch) the browser.

JWS (J2SE 1.2+) applications or applets have access to
BasicService.showDocument()..
<http://www.physci.org/jws/#bs>

Ultimately, it is easiest in a JWS app.

Signature

Andrew Thompson
http://www.physci.org/



Free Magazines

Get these publications absolutely FREE for up to 12 months. There are no hidden fees and no obligation. Simply choose a title, complete the application form and submit it. Read more ...

Oracle MagazineNetwork ComputingComputer WorldBio-IT WorldeWeekInformation WeekInfosecurity
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.