我在一个 Eclipse 插件上工作,它有两个TreeViewer
,其中一个带有参数SWT.RIGHT_TO_LEFT
。这看起来像这样:
如您所见,树结构是从右到左绘制的,这就是我所需要的。但是,这是我的问题,文本也会被反转,但只有当字符串中有特殊字符时。
PID.5.7
被转换为7.5.PID
。这是我创建TreeViewer
文本的方式:
xmlTreeOut = new TreeViewer(composite, SWT.RIGHT_TO_LEFT | SWT.DOUBLE_BUFFERED);
...
xmlTreeOut.getTree().addPaintListener(new PaintListener() {
public void paintControl(PaintEvent e) {
//loop over treeItems and for each
...
TextLayout textLayout = new TextLayout(Display.getDefault());
textLayout.setText(xmlName + xmlValue);
textLayout.draw(event.gc, root.getBounds().x + 2, root.getBounds().y + 1);
...
}
});
有没有人可以解决这个问题?我希望我的字符串与我在TextLayout
.
编辑:
我添加了提到的
textLayout.setOrientation(SWT.RIGHT_TO_LEFT);
现在我的输出是这样的:
如您所见,它适用于像 PID.7.5 这样的字符串,但如果字符串用空格分隔并且只包含特殊字符,则它的反转。像“MSH.1 |” 变成“|MSH.1”
(删除了 Style2 并在 TextLayout 中仅使用一种样式)
编辑2:
解决方法:
我现在测试我的字符串是否以没有 az、AZ 的“单词”开头,我只需在前面添加一个 StyleColor = WHITE 的“x”。这样,所有值都可以正确显示。