首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Java重叠/多个StyleRanges

Java重叠/多个StyleRanges
EN

Stack Overflow用户
提问于 2017-04-17 13:44:50
回答 2查看 279关注 0票数 1

我在我的项目中使用了一个StyledText,在它中,我有很多文本可以根据某些事件有不同的样式,有时这些样式可能会重叠,所以表示黄色背景色的样式可以设置为已经具有红色前景色的styleRange的区域。

下面是一个不代表封闭源代码项目的代码示例:

代码语言:javascript
运行
复制
        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不删除旧的样式范围,或者至少复制以前的特性,以防其中一个是空的?

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-04-17 13:59:02

样式范围不能重叠。您将不得不编写代码来组合它们重叠的范围,以实现您想要的结果。

如果可以使用JFace,则TextPresentation类可以合并重叠范围。您可以单独使用它,并与TextViewerSourceViewer类结合使用。

票数 4
EN

Stack Overflow用户

发布于 2017-04-17 13:58:47

setStyleRange()很大程度上说明了一切:

新样式覆盖指定范围的现有样式。如果与新样式部分重叠,则调整现有样式范围。

这意味着您必须分别定义每个部分:

  • 红色文本,白色背景
  • 红色文本,黄色背景
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43452732

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档