java2s_http://www.java2s.com/Code/Java/SWT-JFace-Eclipse/SWTStyledText.htm 下有个SWT的StyledText例子...

这个例子的演示效果为:按下F1后,界面开始使用粗体,再按一下,取消粗体如何添加对数字字符着色的功能点?解决方案如下:①添加privatebooleandoColor=false;②修改这段代码,添加对...

这个例子的演示效果为:按下F1后,界面开始使用粗体,再按一下,取消粗体

如何添加对数字字符着色的功能点?

解决方案如下:

①添加private boolean doColor = false;

②修改这段代码,添加对数字字符的判断(48-57是键盘上对应的那些数字,其余的是数字键盘对应的0到9)

styledText.addKeyListener(new KeyAdapter() {

public void keyPressed(KeyEvent e) {

switch (e.keyCode) {

case SWT.F1:

toggleBold();

break;

case 48:

case 49:

case 50:

case 51:

case 52:

case 53:

case 54:

case 55:

case 56:

case 57:

case 16777264:

case 16777265:

case 16777266:

case 16777267:

case 16777268:

case 16777269:

case 16777270:

case 16777271:

case 16777272:

toggleColoring();

break;

default:

// ignore everything else

}

③仿照toggleBold() 写出toggleColoring()

private void toggleColoring() {

Point selectionRange = styledText.getSelectionRange();

StyleRange style = new StyleRange(

selectionRange.x,

selectionRange.y,

ColorConstants.blue,

null,

SWT.NORMAL);

styledText.setStyleRange(style);

doColor = true;

}

④修改

styledText.addExtendedModifyListener(new ExtendedModifyListener() {

public void modifyText(ExtendedModifyEvent event) {

if (doBold) {

StyleRange style = new StyleRange(

event.start,

event.length,

null,

null,

SWT.BOLD);

styledText.setStyleRange(style);

}

}

});

这样一来,当敲出数字的时候,数字就被染上色了。

注意

if (doColor) {

..

event.start - event.length,

...

}

里的这句代码event.start - event.length,能保证刚刚被敲出的数字也被着色!如果仿照if(doBold)里的写成event.start ,则不可以!

自问自答,希望给后来者一些帮助

抱歉,写错了,第4个步奏为:styledText.addExtendedModifyListener(new ExtendedModifyListener() {public void modifyText(ExtendedModifyEvent event) {if (doColor) {StyleRange style = new StyleRange(event.start - event.length, event.length, ColorConstants.blue,null, SWT.NORMAL);styledText.setStyleRange(style);doColor = false;}}});

附带一张运行图

展开

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值