我在我的项目中使用了一个StyledText,在它中,我有很多文本可以根据某些事件有不同的样式,有时这些样式可能会重叠,所以表示黄色背景色的样式可以设置为已经具有红色前景色的styleRange的区域。
下面是一个不代表封闭源代码项目的代码示例:
text_1 = new StyledText(composite, SWT.BORDER);
text_1.setBounds(10, 10, 320, 21);
text_1.setText("1234567890abcdefghij");
text_1.setStyleRange(new StyleRange(0, 9, Display.getDefault().getSystemColor(SWT.COLOR_RED), null));
text_1.setStyleRange(new StyleRange(2, 9, null, Display.getDefault().getSystemColor(SWT.COLOR_YELLOW)));
text_1.setSelection(3, 7);从0到9的第一种风格是有红色的前景色,第二种是有黄色的背景,我得到的是只有0-1会有红色的前景颜色,而2-9将有带黄色背景的黑色前景颜色,当我想要的是2-9同时有红色的前景和黄色的背景。
结果:

我想让它看起来像:

我的问题是,如何才能使设置一个新的styleRange不删除旧的样式范围,或者至少复制以前的特性,以防其中一个是空的?
谢谢。
发布于 2017-04-17 13:59:02
样式范围不能重叠。您将不得不编写代码来组合它们重叠的范围,以实现您想要的结果。
如果可以使用JFace,则TextPresentation类可以合并重叠范围。您可以单独使用它,并与TextViewer或SourceViewer类结合使用。
发布于 2017-04-17 13:58:47
setStyleRange()很大程度上说明了一切:
新样式覆盖指定范围的现有样式。如果与新样式部分重叠,则调整现有样式范围。
这意味着您必须分别定义每个部分:
https://stackoverflow.com/questions/43452732
复制相似问题