小弟目前使用java开发IM系统,要求实现类似QQ显示消息框中的超链接,比如“接受”、“取消”,或者MSN当中的“查看与此人全部对话记录”超链接,希望各位高人指教。
  备注:不使用JEditorPane显示网页的方式,目前我使用的是JTextPane,里面显示的是文本信息。

解决方案 »

  1.   

    做成下划线,然后可以聚焦,响应onclick就行了
      

  2.   

    yhharis : 为字体加上下划线,可以,请问如何在指定的文字信息上加上相应的事件驱动???此问题很急,而且不是三言两句就可解决的,希望做过此方面的经验者能帮帮忙了!!!再次声明: JTextPane中,通过document插入的文本信息。请问在此控件中如何加入超链接,还有在此控件上加上label,button是不合理的,位置有问题,请求回复!!!多少分没关系,问题能解决,所有的分数都给你也无所谓!待回复
      

  3.   

    http://www.java2s.com/Code/Java/Swing-JFC/ShowHTMLViews.htm
    这里很多例子,楼主自己看看
      

  4.   

    自己用HTML语言实现,然后监听
      

  5.   

    import java.awt.BorderLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;import javax.swing.ImageIcon;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.JTextPane;public class PaneInsertionMethods {  public static void main(String[] args) {    final JTextPane pane = new JTextPane();    // button to insert some text
        JButton textButton = new JButton("Insert Text");
        textButton.addActionListener(new ActionListener() {
          public void actionPerformed(ActionEvent event) {
            pane.replaceSelection("text");
          }
        });    // button to insert an icon
        final ImageIcon icon = new ImageIcon("bluepaw.gif");
        JButton iconButton = new JButton(icon);
        iconButton.addActionListener(new ActionListener() {
          public void actionPerformed(ActionEvent event) {
            pane.insertIcon(icon);
          }
        });    // button to insert a button
        JButton buttonButton = new JButton("Insert Button");
        buttonButton.addActionListener(new ActionListener() {
          public void actionPerformed(ActionEvent event) {
            pane.insertComponent(new JButton("Click Me"));
          }
        });    // layout
        JPanel buttons = new JPanel();
        buttons.add(textButton);
        buttons.add(iconButton);
        buttons.add(buttonButton);    JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().add(pane, BorderLayout.CENTER);
        frame.getContentPane().add(buttons, BorderLayout.SOUTH);
        frame.setSize(360, 180);
        frame.setVisible(true);
      }
    }
               这里实现了在JTextPane 上加button,楼主只要在这个基础之上从新绘制button就可以了
      

  6.   

    用JDK6中新特性快速把JLabel做成超链接  
     
    发布时间:2007.05.21 05:26     来源:赛迪网技术社区    作者:dxaw 用过NetBeans的朋友可能会发现,在NB的窗体界面中,有一些JLabel以图标形式出现,当鼠标点击这些label标签时,会自动打开我们的浏览器,并导航到相应的网站。 这个功能看起来似乎比较简单,可能有的朋友会想到用Runtime来调用本地浏览器。但这个方法太呆板了,有很大的局限性。首先,如果通过本地路径来调用,势必在可移植性上打了折扣。因为不同系统之间,不可能有相同的系统路径。其次,如果用户有多个浏览器,如既安装了ie还安装了firefox,而用户平时更喜欢在firefox中浏览网页,我们就不能强迫他用ie来打开我们要显示的信息。 而我们现在不需要为这些功能费脑细胞了,因为在JDK6中新增加的Desktop类为我们解决了这个问题。它不仅允许我们可以检测并打开默认浏览器,还允许我们检测并打开默认的邮件客户端,以及打开编辑和打印文件的功能。 这里我只给大家演示打开默认浏览器的功能,实现这样一个功能很简单,我们可以把它封装到一个类中,如果我们想把一个带图标的JLabel做成一个超链接效果,就可以给JLabel组件增加鼠标事件,来调用我们下边的代码,打开系统的默认浏览器。 代码如下: 
    package org.anthrax;import java.awt.Cursor;
    import java.awt.Desktop;
    import java.io.IOException;
    import java.net.MalformedURLException;
    import java.net.URI;
    import java.net.URISyntaxException;
    import javax.swing.JLabel;/**
    *
    * @author Anthrax
    *此类负责检测系统的默认浏览器等程序,并负责启动它们
    * @netSite 指定要显示的网址
    */
    public class DesktopRuner {
      private Desktop desktop;
      private URI uri;
      private String netSite;
      private Cursor hander;
      /** Creates a new instance of DesktopRuner */
      public DesktopRuner() {
        this.desktop = Desktop.getDesktop();
      }
      /*
      *检测系统是否支持浏览器
      */
      public boolean checkBroswer(){
        if(desktop.isDesktopSupported() && desktop.isSupported(Desktop.Action.BROWSE)){
            return true;
        }
        else{
            return false;
        }
      }
      /*
      *运行默认浏览器,并在其中显示指定网址
      */
      public void runBroswer(){
        netSite = "http://mybass.china-pub.com";
        try {
            uri = new URI(netSite);
        } catch (URISyntaxException ex) {
            ex.printStackTrace();
        }
        try {
            desktop.browse(uri);
        } catch (IOException ex) {
            ex.printStackTrace();
        }
      }
      /*
      *改变鼠标形状
      */
      public void changeMouse(JLabel label){
        hander = new Cursor(Cursor.HAND_CURSOR);
        label.setCursor(hander);
      }

     以前在网上看到的,链接忘了
    我没有试过,不知行不行,希望对你有些帮助