|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
首先第一点:jsp,servlet,javabean这些最基本的,嘿嘿,就算你是高手的话,在大行的企业级应用的话还是需要框架的,一个好的框架确实能构解决许多问题。
我常常在网上瞥见很多伴侣问,怎样在JTextArea中把持字符,怎样设置特定字符的色彩等等。我在用Java做一个SQL查询剖析器中发明了一个对照好的办理计划就是利用JTextPane,那末怎样更好的利用JTextPane呢,我现摘自我那部分程序的一部分,供人人参考。
packagecom.JDAGUI;
importjavax.swing.text.*;
importjava.util.*;
importjava.awt.*;
importcom.JDA.*;
/**
*@authorwhxu
*/
publicclassJDAStyledDocumentextendsDefaultStyledDocument
{
privateinttype=-1;//数据毗连范例
AttributeSetmyAttributeSet=null;
publicJDAStyledDocument(inttype)
{
this.type=type;
}
/**
*拔出字符串
*/
publicvoidinsertString(intoffset,Stringstr,AttributeSeta)
throwsBadLocationException
{
this.myAttributeSet=a;
super.insertString(offset,str,a);
setSyntaxColor(offset,str.length());
}
/**
*删除字符串
*/
publicvoidremove(intoffs,intlen)
throwsBadLocationException
{
super.remove(offs,len);
setSyntaxColor(offs);
}
/**
*猎取制订地位的字符
*/
privateStringgetPositionChar(intoffset)
{
Stringstr="";
try
{
str=getText(offset,1);
}
catch(BadLocationExceptionex)
{
//ex.printStackTrace(System.out);
}
returnstr;
}
/**
*从指定的地位入手下手,倒推到第一个碰到空格地位
*/
privateStringgetBeforeBlankString(intoffset)
{
Stringstr="";
if(offset<0)return"";
str=getPositionChar(offset);
if(SyntaxMgr.isSpaceChar(str))
return"";
Stringr=getBeforeBlankString(offset-1);
returnr+str;
}
/**
*从指定的地位入手下手,顺推到第一个碰到空格地位
*/
privateStringgetAfterBlankString(intoffset)
{
Stringstr="";
if(offset>getLength())return"";
str=getPositionChar(offset);
if(SyntaxMgr.isSpaceChar(str))
return"";
Stringr=getAfterBlankString(offset+1);
returnstr+r;
}
/**
* 依据Postion,向前判别,向后判别,设置色彩,前往设置色彩开端的地位
*/
privateintsetSyntaxColor(intoffset)
{
if(offset<0)returnoffset;//假如设置的地位不存在,能够不必思索
if(myAttributeSet==null)returnoffset;//假如myAttributeSet为null,能够不必思索
StringifSyntax="";
Stringbefore=getBeforeBlankString(offset-1);
Stringafter=getAfterBlankString(offset);
Syntax=(before+after).trim();
intstart=offset-before.length();
inttmp_len=ifSyntax.length();
if(start<0||tmp_len<=0)returnoffset;//假如设置色彩的字符串为空,前往
//设置色彩
StyleConstants.setForeground((MutableAttributeSet)myAttributeSet,
SyntaxMgr.isSyntax(type,ifSyntax));
setCharacterAttributes(start,tmp_len,myAttributeSet,true);
returnstart+tmp_len;
}
/**
*依据一个局限,设置该局限内的的SyntaxColor
*/
privateintsetSyntaxColor(intoffset,intlen)
throwsBadLocationException
{
//假如局限不存在,不思索
if(offset<0||len<0)returnoffset;
inttmp_offset=offset;
while(tmp_offset<offset+len)
{
tmp_offset=setSyntaxColor(tmp_offset);
tmp_offset=getNextWordOffset(tmp_offset);
}
tmp_offset=setSyntaxColor(tmp_offset);//设置轮回完后的最初一个单词
returntmp_offset;
}
/**
*依据Postion,取得下一个单词的入手下手点
*/
privateintgetNextWordOffset(intoffset)
{
intrOffset=offset;
inttextlength=getLength();
while(rOffset<=textlength&&offset>=0)
{
Stringstr=getPositionChar(rOffset);
if(!SyntaxMgr.isSpaceChar(str))
{
break;
}
rOffset+=1;
}
if(rOffset!=offset)//设置距离的色彩
{
//设置色彩
StyleConstants.setForeground((MutableAttributeSet)myAttributeSet,
SyntaxColorMgr.getSpaceColor());
setCharacterAttributes(offset,rOffset-offset,myAttributeSet,true);
}
returnrOffset;
}
}
到此为此,我们做好了一个合用于JTextPane的Document。利用JTextPane就对照复杂了。
能够如许利用
JTextPanesqlPane=newJTextPane(newJDAStyledDocument(type));
由于我这个例子中利用了依据数据库范例分歧来显现分歧的关头字,以是我传了一个inttype。
而学习JAVA我觉得最应该避免的就是:只学习,不思考,只记忆,不实践! |
|