Затмение Draw2d.Изменение порядка z для IFigure - PullRequest
1 голос
/ 24 февраля 2012

Я работаю с примерами из книги «Eclipse Graphical Framework (GEF)», и во включенном примере «Генеалогия» (главы Draw2d), похоже, неправильный порядок чисел.При перетаскивании или выборе фигуры ее z-порядок остается неизменным, что вызывает странное / неестественное поведение, при котором перетаскиваемая фигура может перетаскиваться под другими фигурами.

Я хотел бы иметь возможность изменять z-порядок фигур, когда фигурывыбраны таким образом, что они перемещаются в верхнюю часть списка детей и отображаются в верхней части измерения z диаграммы.Каков наилучший способ сделать это?

Ответы [ 2 ]

0 голосов
/ 19 февраля 2013

Я обнаружил, что удаление фигуры и добавление ее обратно испортит систему событий, так что, если, например, ваше намерение состоит в том, чтобы при перетаскивании фигуры в другое место вы хотели вывести эту фигуру вперед, перетаскивание прервано, и вы больше не получите никаких событий для этой фигуры. Чтобы вывести фигуру наверх, используйте следующий код:

final IFigure child = <figure you want to bring to the front>;
final IFigure parent = child.getParent();
final List children = child.getParent().getChildren();
children.remove( child );
children.add( child );
child.repaint();

Это манипулирование необработанным списком дочерних элементов, перемещение конкретного дочернего элемента на фронт z-порядка. Затем выдается перекраска ребенка, чтобы показать это изменение. Это решение относится только к Draw2d и не имеет ничего общего с GEF.

0 голосов
/ 25 февраля 2012

Z-порядок фигур в draw2d определяется либо по порядку сложения (последняя цифра сверху), либо может быть установлен в Figure.add.

Я предполагаю, что самый простой (но, вероятно, не очень эффективный) способ сделать то, что вы хотите, это удалить фигуру из родительского элемента и добавить ее снова.Это сделает последнюю добавленную цифру, следовательно, и верхнюю цифру

...