【问题标题】:Placing figure in top-right corner of another将图形放在另一个的右上角
【发布时间】:2010-03-19 09:20:08
【问题描述】:
我希望子图形 (org.eclipse.draw2d.Figure) 相对于父图形的右上角(我希望放置一些小图标,即 ImageFigure,距离顶部和右侧边界 12 像素)。是否有现有的布局管理器可以以这种方式布局子级?
org.eclipse.draw2d.XYLayout 不能测量相对于左上角以外的角的位置。
当然,我可以:
- 自己编写布局管理器
- 每次更改父级的边界时布局子级图(在父级 layout() 方法中)。
但是,我想知道现有的布局管理器是否提供该功能。
请注意,问题是关于 Eclipse GEF,而不是 SWT/JFace 或 Swing。
【问题讨论】:
标签:
java
draw2d
eclipse-gef
【解决方案1】:
许多布局允许您将组件放置在右侧。 FlowLayout、BoxLayout、GridBagLayout。使用 FlowLayout 可能是最简单的。您可以将水平和垂直间隙设置为 12 使用右对齐,它应该可以解决您的问题。
否则,您可以将 EmptyBorder 添加到组件中,顶部/右侧插入 12 以确保准确放置在您想要的位置。
【解决方案2】:
没有一个标准的布局管理器会为您做到这一点。
我能想到两种可能性:
在顶级容器(JWindow、JDialog、JFrame、JApplet)上添加一个玻璃窗格并在其中绘制图标。
创建一个将绘制图标的边框。我更喜欢这个想法,因为它适用于任何 JComponent,而且很明显它是组件上的装饰。