1

私は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ドキュメントにメソッドが見つかりません。一般的にドキュメントが不足しています...よろしくお願いします。

4

1 に答える 1

4
  1. 長方形のレイアウトを にBorderLayout設定してから、ラベルの制約を に設定できCENTERます。これにより、センタリングが自動的に処理されます。
  2. MarginBorderフィギュアをパディングするためにを追加できます。
  3. 上記の 2 つの回答を使用すると、おそらくコードが改善されます :-)
于 2011-09-20T15:04:37.360 に答える