私は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);
}
}
私のクラスは、RectangleFigure の代わりに Figure を拡張します。これは、後で ToolbarLayout を追加して、RectangleFigure+Label の下に追加する必要があるためです...私の質問:
- 私のように位置を計算せずに、親(RectangleFigure)内に図(Label)を中央に配置する方法はありますか?
- 図に「パディング」(ラベルに設定したサイズのような結果) または「マージン」(子とマージンから自動的に計算されるサイズ) を追加する方法はありますか?
- 一般的に、私がやろうとしていることを実装するためのより良い方法はありますか?
APIドキュメントにメソッドが見つかりません。一般的にドキュメントが不足しています...よろしくお願いします。