2

私は 2 つの Eclipse プラグインに取り組んでおりTreeViewer、そのうちの 1 つはパラメータ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 で 1 つのスタイルのみを使用します)

編集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両方TreeViewerの sに対して に設定するだけです (または、前の右から左を反転するSWT.RIGHT_TO_LEFTために右に設定することもできますか?)。TreeViewer

于 2014-06-18T08:35:01.433 に答える