我在我的项目中使用了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的第一个样式是具有红色前景色,2-9的第二个样式是具有黄色背景,我得到的是只有0-1会有红色前景色,而2- 9 将具有黑色前景色和黄色背景,而我想要的是 2-9 同时具有红色前景色和黄色背景。
结果:
我希望它看起来像:
我的问题是,如何才能设置新的 styleRange 不会删除旧的样式范围,或者至少复制以前的特征(以防万一为空)?
谢谢。
最佳答案
样式范围不能重叠。您必须编写代码来组合它们重叠的范围,以实现您想要的效果。
如果您可以使用 JFace,则 TextPresentation
类可以合并重叠范围。您可以单独使用它,也可以与 TextViewer
或 SourceViewer
类结合使用。
关于Java SWT 重叠/多个 StyleRanges,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43452732/