快速业务通道

如何更好的使用JTextPane - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-23

如何更好的使用JTextPane

时间:2010-12-12

我经常在网上看见许多朋友问,如何在JTextArea中控制字符,如何设置特定字符的颜色等等。我在用Java做一个SQL查询分析器中发现了一个比较好的解决方案就是使用JTextPane,那么如何更好的使用JTextPane呢,我现摘自我那部分程序的一部分,供大家参考。

package com.JDAGUI; import javax.swing.text.*; import java.util.*; import java.awt.*; import com.JDA.*; /** *@author whxu */ public class JDAStyledDocument extends DefaultStyledDocument {   private int type = -1;//数据连接类型   AttributeSet myAttributeSet = null;   public JDAStyledDocument(int type)   {    this.type = type;   }   /**   *插入字符串   */   public void insertString(int offset,String str,AttributeSet a)   throws BadLocationException   {    this.myAttributeSet = a;    super.insertString(offset,str,a);    setSyntaxColor(offset,str.length());   } /**   *删除字符串   */   public void remove(int offs,int len)   throws BadLocationException   {    super.remove(offs,len);    setSyntaxColor(offs);   }   /**   *获取制定位置的字符   */   private String getPositionChar(int offset)   {    String str = "";    try    {     str = getText(offset,1);    }    catch(BadLocationException ex)    {     //ex.printStackTrace(System.out);    }    return str;   } /**   *从指定的位置开始,倒推到第一个遇到空格位置   */   private String getBeforeBlankString(int offset)   {    String str = "";    if(offset<0) return "";      str = getPositionChar(offset);    if(SyntaxMgr.isSpaceChar(str))     return "";    String r = getBeforeBlankString(offset-1);    return r + str;   }   /**    *从指定的位置开始,顺推到第一个遇到空格位置   */   private String getAfterBlankString(int offset)   {    String str = "";    if(offset>getLength()) return "";     str = getPositionChar(offset);     if(SyntaxMgr.isSpaceChar(str))      return "";     String r = getAfterBlankString(offset+1);     return str + r;   }   /**    * 根据Postion,向前判断,向后判断,设置颜色,返回设置颜色末尾的位置   */   private int setSyntaxColor(int offset)   {    if(offset<0) return offset;//如果设置的位置不存在,可以不用考虑    if(myAttributeSet==null) return offset;//如果myAttributeSet为null,可以不用考虑    String ifSyntax = "";    String before = getBeforeBlankString(offset-1);    String after = getAfterBlankString(offset);    Syntax = (before + after).trim();    int start = offset-before.length();    int tmp_len = ifSyntax.length();    if(start<0 || tmp_len<=0) return offset;//如果设置颜色的字符串为空,返回    //设置颜色   StyleConstants.setForeground((MutableAttributeSet)myAttributeSet,    SyntaxMgr.isSyntax(type,ifSyntax));   setCharacterAttributes(start,tmp_len,myAttributeSet,true);    return start + tmp_len;   }   /**    *根据一个范围,设置该范围内的的SyntaxColor   */   private int se

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号