Размещение фигуры в правом верхнем углу другой

Я хочу, чтобы дочерняя фигура (org.eclipse.draw2d.Figure) располагалась относительно верхнего правого угла родительской фигуры (я хочу разместить небольшую иконку, которая будет ImageFigure, на расстоянии 12 пикселей от верхней и правой границ). Существует ли существующий менеджер компоновки, который может таким образом компоновать дочерний элемент?

org.eclipse.draw2d.XYLayout не может измерять положение относительно угла, отличного от верхнего левого.

Конечно я могу:

  1. Написать менеджер компоновки самостоятельно
  2. Дочерние макеты фигурируют каждый раз, когда границы родительского объекта изменяются (в родительском методе layout()).

Однако я хотел бы знать, предоставляет ли какой-либо существующий менеджер компоновки эту функциональность.

Обратите внимание, что вопрос касается Eclipse GEF, а не просто SWT/JFace или Swing.


person Ivan Dubrov    schedule 19.03.2010    source источник


Ответы (2)


Многие макеты позволяют расположить компонент справа. FlowLayout, BoxLayout, GridBagLayout. Использование FlowLayout, вероятно, было бы самым простым. Вы можете просто установить горизонтальные и вертикальные зазоры на 12 и использовать правильное выравнивание, и это должно решить вашу проблему.

Или же вы можете добавить EmptyBorder к компоненту с верхней/правой вставкой 12, чтобы убедиться, что он размещен именно там, где вы хотите.

person camickr    schedule 19.03.2010

Ни один из стандартных менеджеров компоновки не сделает этого за вас.

Я могу думать о 2 возможностях:

  1. В контейнере верхнего уровня (JWindow, JDialog, JFrame, JApplet) добавьте стеклянную панель и нарисуйте на ней значок.

  2. Создайте границу, которая будет рисовать значок. Мне эта идея больше нравится, так как она будет работать с любым JComponent, и понятно, что это украшение компонента.

person Devon_C_Miller    schedule 19.03.2010