当前位置:  技术问答>java相关

请教:java的application里如何做超链接的效果?

    来源: 互联网  发布时间:2015-09-16

    本文导语:  我有一个JTextArea,我想把里面的一部分String做成超链接的形式(可以设置颜色,鼠标移到上面会变成手的形状,点击会新开窗口),我该如何做? 请各位高手指教. | import java.awt.*; import java.awt.event.*; public cl...

我有一个JTextArea,我想把里面的一部分String做成超链接的形式(可以设置颜色,鼠标移到上面会变成手的形状,点击会新开窗口),我该如何做?
请各位高手指教.

|
import java.awt.*;
import java.awt.event.*;

public class UrlLabel extends Label implements MouseListener  // 监听鼠标动作
{
  boolean drawLine = false;  // 是否画线标志 
  public UrlLabel()   // 如果参数为空,调用另一个构造器
  {
    this("");
  }

  public UrlLabel(String text) // 构造UrlLabel类
  {
    super(text);       // 调用父类的构造器
    addMouseListener(this);  // 增加鼠标监听器
  }

  public void paint(Graphics g)
  {
    Rectangle r;
    super.paint(g);   // 由父类先处理显示文本
    if(drawLine)    // 如果是画线状态(说明鼠标在上方)
    {
      r = g.getClipBounds();  // 取字体边框范围
      g.drawLine(0, r.height - this.getFontMetrics(this.getFont()).getDescent(),
            this.getFontMetrics(this.getFont()).stringWidth(this.getText()),
            r.height - this.getFontMetrics(this.getFont()).getDescent()); //在最下边画线
    }
  }

  public void mouseEntered(MouseEvent e)  // 鼠标进入事件
  {
    drawLine = true;  // 允许画线
    repaint();
  }

  public void mouseExited(MouseEvent e)  //鼠标离开事件
  {
    drawLine = false;  // 放弃画线
    repaint();
  }
  public void mouseReleased(MouseEvent e){}
  public void mouseClicked(MouseEvent e){}
  public void mousePressed(MouseEvent e){}

  public void destory()
  {
    removeMouseListener(this);  // 去掉监听
  }
}
==========================================
测试程序代码:UrlLabelText .java
------------------------------------------
import java.awt.*;
import java.awt.event.*;
import java.applet.*;

public class UrlLabelText extends Applet
{
  public void init()
  {
    UrlLabel urlLabel = new UrlLabel("UrlLabelText");
    add(urlLabel);
  }
}

|
hehe,来领分的,多多努力。

|
我觉得你应该自己去实现一个Document,并且为它加一个DocumentListener判断输入是否为你标记的String,并更新它的颜色,确定光标的显示。

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 请教,请教,这个问题是为什么????
  • 请教本地硬盘安装问题请教本地硬盘安装问题
  • ■请教■请教redhat最基本的问题!
  • 请教一个 shell 问题,我用下面这个 shell 语句总是失败,请教
  • 高分请教,各位大侠,请教一个问题,理论高手请进??谢谢
  • 请教Linux下pgadmin3-1.0.2的编译和安装!!高分请教!
  • 各位大虾,请教装了REDHAT9操作系统后,启动时无法引导到LINUX,请教该如何解决啊
  • 请教,请教,,,一定要看!!一定要看!!
  • 请教高手,小弟打印width=1500,height=600(A3纸)的Applet,在预览中是该区域是黑的,打印出来也是黑的,请教高手解决一下
  • :请教高手,小弟打印width=1500,height=600(A3纸)的Applet,在预览中是该区域是黑的,打印出来也是黑的,请教高手解决一下
  • 请教象我这样的硬盘应如何安装Linux,我昨天试装了,但有问题。(老问题了,也看了前面的帖子,但还是来请教,请多指教)
  • 请教这种循环的执行过程
  • 请教两个redhat9问题
  • 请教如何在指定目录下查找包含指定文字的文件
  • 请教局域网中如何通过ip地址得到主机名
  • 请教kdevelop的问题
  • 请教linux 下的adsl拨号问题.
  • 请教,如何用虚拟订机安装liux
  • 【请教】LINUX 下SNMP的MIB开发
  • 请教一个opengl的问题


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3