Java TreeViewer SWT.RIGHT_TO_LEFT

时间:2014-06-18 08:30:36

标签: java swt jface treeviewer

我在一个Eclipse插件上工作,它有两个TreeViewer,其中一个参数为SWT.RIGHT_TO_LEFT。这看起来像这样: Plugin Screen

正如您所见,树形结构是从右到左绘制的,这就是我所需要的。但是,这是我的问题,文本也被反转,但只有当字符串中有特殊字符时。 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);

现在我的输出是这样的:

enter image description here

正如你所看到的,它适用于像PID.7.5这样的字符串,但是如果有字符串分隔空格并且只包含反转的特殊字符。 喜欢" MSH.1 |"成为" | MSH.1"

(删除了Style2并在TextLayout中只使用了一种样式)

编辑2:

解决方法解决方案:

我现在测试我的字符串是否以"字开头#34;没有a-z,A-Z我只需添加一个" x"前面有StyleColor = WHITE。这样就可以正确地消除所有值。

1 个答案:

答案 0 :(得分:1)

我没有对此进行过测试,但方法TextLayout#setOrientation(int orientation)看起来就像你需要的那样:

  

设置接收器的方向,该方向必须是SWT.LEFT_TO_RIGHTSWT.RIGHT_TO_LEFT之一。

只需将SWT.LEFT_TO_RIGHT设置为TreeViewer(或SWT.RIGHT_TO_LEFT为右TreeViewer以反转前一个从右到左?)。