这个例子的演示效果为:按下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; } } });
附带一张运行图