Я полный новичок с draw2d, я пытаюсь сделать несколько примеров, чтобы научиться его использовать ... Я пытаюсь написать рисунок, который показывает метку с белым фоном, некоторые отступы, и вмещающий серый фон. Для этого я написал следующее:
public class MyFigure extends Figure {
private Label label;
private RectangleFigure rectangle;
public MyFigure() {
rectangle = new RectangleFigure();
rectangle.setBackgroundColor(ColorConstants.gray);
label = new Label("Test label");
label.setFont(new Font(null, "Arial", 12, SWT.BOLD));
label.setTextAlignment(PositionConstants.CENTER);
label.setBackgroundColor(ColorConstants.white);
label.setForegroundColor(ColorConstants.black);
label.setOpaque(true);
rectangle.add(label);
this.add(rectangle);
}
protected void paintFigure(Graphics graphics) {
// Add padding to the label
label.setSize(label.getTextBounds().resize(35, 10).getSize());
// Set rectangle size, with some margin around the label
Dimension d = label.getSize().expand(40, 10);
rectangle.setSize(d);
// Center the label inside the rectangle
label.setLocation(rectangle.getLocation().translate(20, 5));
// Finally, set this figure's bounds
this.setBounds(rectangle.getBounds());
super.paintFigure(graphics);
}
}
Мой класс расширяет Figure вместо RectangleFigure, потому что я хочу добавить ToolbarLayout позже, чтобы добавить вещи под RectangleFigure + Label ... Теперь мои вопросы:
- Есть ли способ центрировать фигуру (метку) внутри ее родителя (RectangleFigure), не вычисляя позицию, как я?
- Есть ли способ добавить «отступы» к рисункам (в результате чего-то вроде размера, который я установил на ярлыке) или «поля» (размер, рассчитываемый автоматически из его дочерних элементов и поля?
- Есть ли вообще лучший способ реализовать то, что я пытаюсь сделать?
Я не могу найти какой-либо метод в api docs, и вообще не хватает документации ... Заранее спасибо.