Я работаю над плагином Eclipse, у которого есть два TreeViewer
, один из них с параметром SWT.RIGHT_TO_LEFT
. Это выглядит так: Java 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
.
EDIT:
Я добавил упомянутый
textLayout.setOrientation(SWT.RIGHT_TO_LEFT);
Теперь мой выход, как это:
Как вы можете видеть, что это работает для струнных, как PID. 7.5, но если есть строки, разделенные пробелом и содержащие только специальные символы, их инверсия. Как "MSH.1 |" становится "| MSH.1"
(удалены style2 и использовать только один стиль в TextLayout)
EDIT 2:
ВОЗМОЖНОЕ РЕШЕНИЕ РЕШЕНИЕ:
я проверить сейчас, если мой Строка начинается с слова, которое не имеет az, AZ. Я просто добавляю «x» с StyleColor = WHITE спереди. Таким образом, все значения отображаются неправильно.
Спасибо за быстрый ответ, да, я увидел setOrientation, но не попытался установить его снова RIGHT_TO_LEFT. Он работает, но только наполовину. Я добавляю экран «нового» результата в свой первый пост. – Darkpara
@ Darkpara Хм, я не могу придумать лучшего решения, чем расщепление на символе пробела, инвертирование массива, объединение его снова и использование его ... – Baz
Было бы возможно, если бы все было одинаково. Смотрите новый экран, String только инвертируется, когда «слово» содержит только специальные символы, в случае с двумя словами (обычные символы) это не инвертирует .. это действительно странно – Darkpara