java label 超链接_Java Swing应用程序JLable超链接

在HTML中设置一个超链接是很容易的,使用标签就可以完成了。

在客户端应用程序中,并没有这样的标签,但是可以使用按钮来实现,But 有时候就是想好看一点,不想要按钮,只想要个超连接,所以需要自定义这样的一个标签。

那就拿JLable来实现吧:

对于一个超链接来说,需要有链接地址和描述文字,那就直接上代码

首先创建一个LinkLable类,继承JLable,该类应该有如下属性:

public class LinkLabel extends JLabel {

private String text;// 超链接文本

private URL url;// 链接

private Color color = Color.BLUE;// 链接颜色

public LinkLabel(String text, String url) {

super("" + text + "");

this.text = text;

this.setForeground(Color.BLUE);

if (!url.startsWith("http://")) {

url = "http://" + url;

}

try {

this.url = new URL(url);

} catch (MalformedURLException e) {

e.printStackTrace();

}

// 设置鼠标事件

this.addMouseListener(new MouseAdapter() {

@Override

public void mouseClicked(MouseEvent e) {

try {

Desktop.getDesktop().browse(LinkLabel.this.url.toURI());//最重要的是这句话,这句话是对点击标签进行web请求的关键

} catch (IOException e1) {

e1.printStackTrace();

} catch (URISyntaxException e1) {

e1.printStackTrace();

};

}

//设置鼠标进入事件,这里只是设置了颜色

@Override

public void mouseEntered(MouseEvent e) {

LinkLabel.this.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));

color = LinkLabel.this.getForeground();

LinkLabel.this.setForeground(Color.RED);

LinkLabel.this.setText("" + LinkLabel.this.text + "");

}

@Override

public void mouseExited(MouseEvent e) {

LinkLabel.this.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));

if (color != null) {

LinkLabel.this.setForeground(color);

}

LinkLabel.this.setText("" + LinkLabel.this.text + "");

}

});

}

}

上述代码实现了进行web访问LinkLable,那么有时候不是访问web页面,只是应用程序呢?

其实很简单,只需要改变鼠标点击事件mouseClicked方法的实现就好了,

String url = LocalLinkLabel.this.url;

if("register".equals(url)){

System.out.println("here");

((JFrame)LocalLinkLabel.this.getParent().getParent()

.getParent().getParent().getParent()).dispose();

new RegisterFrame();

}

看到这么多getParent()方法是不是很疑惑?其实只不过是找到该窗体可通过System.out.print(this.getParent())直到找到待关闭的窗体即可;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值