我在一个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:
解决方法解决方案:
我现在测试我的字符串是否以"字开头#34;没有a-z,A-Z我只需添加一个" x"前面有StyleColor = WHITE。这样就可以正确地消除所有值。
答案 0 :(得分:1)
我没有对此进行过测试,但方法TextLayout#setOrientation(int orientation)
看起来就像你需要的那样:
设置接收器的方向,该方向必须是
SWT.LEFT_TO_RIGHT
或SWT.RIGHT_TO_LEFT
之一。
只需将SWT.LEFT_TO_RIGHT
设置为TreeViewer
(或SWT.RIGHT_TO_LEFT
为右TreeViewer
以反转前一个从右到左?)。