如何在面板上显示超链接? 我想要在JPanel中显示一个超链接,鼠标经过时会出现下划线,单击转到指定的URL那种。试了直接在JLabel上写HTML代码貌似不行,不知道有什么组件能够实现这个功能的?还是要自己写鼠标事件? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 LABLE上面加个JBUTTON,点击后Runtime.getRuntime().exec(IExplore.exe "mailto:[email protected]") 在LABLE上注册鼠标事件 移过去后JBUTTON下面DRAWLINE 如果你是JDK1.6 还有个更好的办法 JDK1.6中实现了调用IE的JNI代码如下package csdn;import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.awt.Desktop;/***Swing中实现超连接,注意:需要JDK1.6*@author Eastsun*/ class SupperLink{ public static void main(String[] args){ JFrame frame =new JFrame("SupperLink"); JLabel label =new LinkLabel("欢迎访问 csdn blog^_^","http://www.csdn.net"); frame.add(label); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.pack(); frame.setVisible(true); }}/***LinkLabel,一个实现超连接的Label.*使用方法: label =new LinkLabel("在label上现示的文本","点击文本时打开的url地址");*/class LinkLabel extends JLabel{ private String text,url; private boolean isSupported; public LinkLabel(String text,String url){ this.text =text; this.url =url; try{ this.isSupported = Desktop.isDesktopSupported()&&Desktop.getDesktop().isSupported(Desktop.Action.BROWSE); }catch(Exception e){ this.isSupported = false; } setText(false); addMouseListener(new MouseAdapter(){ public void mouseEntered(MouseEvent e){ setText(isSupported); if(isSupported) setCursor(new Cursor(Cursor.HAND_CURSOR)); } public void mouseExited(MouseEvent e){ setText(false); } public void mouseClicked(MouseEvent e){ try{ Desktop.getDesktop().browse(new java.net.URI(LinkLabel.this.url)); }catch(Exception ex){ } } }); } private void setText(boolean b){ if(!b) setText("<html><font color=black>"+text); else setText("<html><font color=blue><u>"+text); }} package csdn;import java.awt.*;import java.awt.event.*;import java.io.IOException;import javax.swing.*;/***GLabel,一个实现超连接的Label.*使用方法: label =new GLabel("在label上现示的文本","点击文本时打开的url地址");*/class GLabel extends JLabel{ private String _url; private String _text; private Cursor cur_bak; public GLabel(String text, String url) { if (!url.startsWith("http://")) { url = "http://" + url; } this._url = url; this._text = text; setText(text); this.addMouseListener(new MouseAdapter(){ public void mouseEntered(MouseEvent e) { cur_bak = getCursor(); setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); setText("<html><u>" + _text + "</u></html>"); } public void mouseExited(MouseEvent e) { setCursor(cur_bak); setText(_text); } public void mousePressed(MouseEvent e) { try { Runtime.getRuntime().exec("explorer " + _url); } catch (IOException e1) { e1.printStackTrace(); } } }); } //测试 public static void main(String[] args) { JFrame f = new JFrame(); f.setLayout(new FlowLayout()); f.add(new GLabel("csdn", "http://csdn.net/")); f.setSize(500, 400); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setVisible(true); }} setText("<html><a href='*.jsp'>text</a></html>"); 用Desktop可以了,感谢楼上的高手~^^ setText("<html><a href='*.jsp'>text</a></html>");-------------------------------------------------------------这个我试过,不行的说…… swt的text传值问题 为什么我的socket连接上了,但不能向服务端发送数据 jdk安装的时候显示不是有效的Win32应用程序? 关于zlib,不同语言之间的交互 求一个小型门诊管理系统 请教:jscrollpane的竖向滚动条可以自动滚动,但是有时候滚动不到最下方? 像我这样的水平怎么糊过面试啊? 面试题目,我是刚学的帮帮我~~~ jbuilder2007中怎样打开UI界面,有么? 非常郁闷!!一个关于jpopupmenu的问题!顺便散分!!!高手请进啊 java 做个类似qq登陆框的程序 Timer定时器的一个问题
Runtime.getRuntime().exec(IExplore.exe "mailto:[email protected]")
在LABLE上注册鼠标事件 移过去后JBUTTON下面DRAWLINE
代码如下
package csdn;import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.awt.Desktop;
/**
*Swing中实现超连接,注意:需要JDK1.6
*@author Eastsun
*/
class SupperLink{
public static void main(String[] args){
JFrame frame =new JFrame("SupperLink");
JLabel label =new LinkLabel("欢迎访问 csdn blog^_^","http://www.csdn.net");
frame.add(label);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
}
}
/**
*LinkLabel,一个实现超连接的Label.
*使用方法: label =new LinkLabel("在label上现示的文本","点击文本时打开的url地址");
*/
class LinkLabel extends JLabel{
private String text,url;
private boolean isSupported;
public LinkLabel(String text,String url){
this.text =text;
this.url =url;
try{
this.isSupported = Desktop.isDesktopSupported()&&Desktop.getDesktop().isSupported(Desktop.Action.BROWSE);
}catch(Exception e){
this.isSupported = false;
}
setText(false);
addMouseListener(new MouseAdapter(){
public void mouseEntered(MouseEvent e){
setText(isSupported);
if(isSupported) setCursor(new Cursor(Cursor.HAND_CURSOR));
}
public void mouseExited(MouseEvent e){
setText(false);
}
public void mouseClicked(MouseEvent e){
try{
Desktop.getDesktop().browse(new java.net.URI(LinkLabel.this.url));
}catch(Exception ex){
}
}
});
}
private void setText(boolean b){
if(!b) setText("<html><font color=black>"+text);
else setText("<html><font color=blue><u>"+text);
}}
import java.awt.event.*;
import java.io.IOException;
import javax.swing.*;/**
*GLabel,一个实现超连接的Label.
*使用方法: label =new GLabel("在label上现示的文本","点击文本时打开的url地址");
*/
class GLabel extends JLabel
{
private String _url;
private String _text;
private Cursor cur_bak;
public GLabel(String text, String url)
{
if (!url.startsWith("http://")) {
url = "http://" + url;
}
this._url = url;
this._text = text;
setText(text);
this.addMouseListener(new MouseAdapter(){
public void mouseEntered(MouseEvent e)
{
cur_bak = getCursor();
setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
setText("<html><u>" + _text + "</u></html>");
}
public void mouseExited(MouseEvent e)
{
setCursor(cur_bak);
setText(_text);
}
public void mousePressed(MouseEvent e)
{
try {
Runtime.getRuntime().exec("explorer " + _url);
} catch (IOException e1) {
e1.printStackTrace();
}
}
});
}
//测试
public static void main(String[] args)
{
JFrame f = new JFrame();
f.setLayout(new FlowLayout());
f.add(new GLabel("csdn", "http://csdn.net/"));
f.setSize(500, 400);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}
}
-------------------------------------------------------------
这个我试过,不行的说……