2

我在一个 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”。这样,所有值都可以正确显示。

4

1 回答 1

1

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

设置接收器的方向,它必须是SWT.LEFT_TO_RIGHT或之一SWT.RIGHT_TO_LEFT

只需将其设置SWT.LEFT_TO_RIGHT为两个TreeViewers (或者可能SWT.RIGHT_TO_LEFT为 rightTreeViewer反转以前的从右到左?)。

于 2014-06-18T08:35:01.433 回答