在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;
}