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,因爲我想在以後添加ToolbarLayout,添加RectangleFigure +標籤下面的東西......現在我的問題:
- 有沒有什麼辦法可以在父母(RectangleFigure)裏面放置一個圖形(標籤)而不用像我那樣計算位置?
- 有沒有辦法給數字添加「填充」(導致類似於我在標籤上設置的大小)或「邊距」(大小是從其子元素和邊距自動計算的大小)
- 是否存在,更好的方式來實現我想要做什麼?
我找不到在API文檔的任何方法,並有一些普遍缺乏的文檔...謝謝你在前進。
MarginBorder幫我添加填充。 BorderLayout將Label的約束設置爲CENTER並沒有奏效,所以我仍然在我的問題中使用「手動」標籤居中代碼......幾個月後(回顧我的問題)非常感謝您的回答! – roirodriguez
您是否將父級的佈局設置爲BorderLayout?應該工作。無論如何,如果你喜歡答案,爲什麼不把它標記爲正確? – vainolo