在JavaSE,给swing中的控件实现超链接效果其实很简单,下面拿JLabel来举例子:代码如下


import java.awt.Desktop;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URISyntaxException;
import java.net.URL;

import javax.swing.JLabel;

/**
 * 
 *	JLabelLink这个类继承了JLabel,主要是为了写入linked()这个方法
 *	需要实例这个类的时候,用对象调用linked这个方法,就可以打开网页了
 */
public class JLabelLink extends JLabel {

	private static final long serialVersionUID = 1L;

	private URL link = null;
	
	public JLabelLink(String jLableText) {
		
		super(jLableText);
	}
	
	public void linked(String link) {
		
		try {
			if(!link.startsWith("http://")) {
				
				link = "http://" + link;
			}
			this.link = new URL(link);
			
		} catch (MalformedURLException err) {
			err.printStackTrace();
		}
		
		try {
			Desktop.getDesktop().browse(this.link.toURI());
		} catch (IOException err) {
			err.printStackTrace();
		} catch (URISyntaxException err) {
			err.printStackTrace();
		}
	}
}




创建JLabelLink对象,并运行,代码如下:


import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

import javax.swing.JFrame;


public class LinkTest extends JFrame implements MouseListener {

	public LinkTest() {
		
		jLabelLink = new JLabelLink("这是一个超链接标签");
		jLabelLink.addMouseListener(this);
		
		this.add(jLabelLink);
		this.setSize(300, 300);
		this.setVisible(true);
		this.setDefaultCloseOperation(EXIT_ON_CLOSE);
	}
	
	public static void main(String[] arg0) {
		
		new LinkTest();
	}
	
	@Override
	public void mouseClicked(MouseEvent e) {
		// TODO Auto-generated method stub
		
		if(e.getSource() == jLabelLink) {
			
			jLabelLink.linked("www.baidu.com");
		}
	}

	@Override
	public void mousePressed(MouseEvent e) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void mouseReleased(MouseEvent e) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void mouseEntered(MouseEvent e) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void mouseExited(MouseEvent e) {
		// TODO Auto-generated method stub
		
	}
	
	private JLabelLink jLabelLink = null;
}