如何在一个GUI组件上添加超链接,例如JLable上.
可不可以不HTML

解决方案 »

  1.   

    以前写的例子,你可以参考下:http://community.csdn.net/Expert/topic/4858/4858937.xml?temp=.8753778
      

  2.   

    还可以在鼠标点击的事件中加上下面打开网页的代码
    Runtime.getRuntime().exec("cmd/"+ htmPath); // 只适合Windows系统
      

  3.   

    Runtime.getRuntime().exec(
    "rundll32 url.dll,FileProtocolHandler http://www.163.com/");
    能打开ie,但不联163.
    为什么
      

  4.   

    mq612(五斗米):
    我将你的MyLable小修改了一下,能直当链接用了。但是只能用于windows下,ie是默认浏览器时。怎么样使它适用于各种平台,各种浏览器。
    另外,你的isEntered 是干什么的?
    代码:
    public class MyLink extends JLabel implements MouseListener {
        private boolean isEntered = false;
        private String url=null;    public MyLink(String url) {
            super();
            this.url=url;
            this.addMouseListener(this);
        }    protected void paintBorder(Graphics g) {
            int w = this.getSize().width;
            int h = this.getSize().height;
            if (isEntered) {
                g.drawLine(0, h - 1, w - 1, h - 1);
            }
        }    public void mouseClicked(MouseEvent mouseEvent) {
            try {
                Runtime.getRuntime().exec(
                        "rundll32 url.dll,FileProtocolHandler "+url);
            } catch (Exception e) {
                e.printStackTrace();
            }    }    public void mousePressed(MouseEvent mouseEvent) {
        }    public void mouseReleased(MouseEvent mouseEvent) {
        }    public void mouseEntered(MouseEvent mouseEvent) {
            isEntered = true;
            this.repaint();
            this.setCursor(new Cursor(Cursor.HAND_CURSOR));
        }    public void mouseExited(MouseEvent mouseEvent) {
            isEntered = false;
            this.repaint();
        }
    }
      

  5.   

    他的isEntered是用来触发paintBorder方法的,画下划线