私は 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」を追加するだけです。このようにして、すべての値が正しく表示されます。