0
我想顯示一個進度條(使用SWT的ProgressBar類)。但是,由於我的窗口背景,酒吧不是很明顯。因此,我試圖在進度條後面放置一個白色矩形(使用GC.fillRoundedRectangle())。我找不到在矩形頂部顯示進度條的方法。我如何在SWT中實現「分層」?在SWT的背景中放置一個小部件
謝謝!
編輯:我試過@ greg-449的建議,但我得到的只是一個空白的窗口 - 我是否執行這個錯誤?
public static void main(String [] args){
Display d = new Display();
Shell parent = new Shell(d);
parent.setSize(500, 500);
parent.open();
makeBar(parent);
while (!parent.isDisposed()) {
if (!d.readAndDispatch()) {
d.sleep();
}
}
}
private static void makeBar(Shell parent) {
Composite body = new Composite(parent, SWT.NONE);
GridLayout layout = new GridLayout();
layout.marginHeight = 20;
layout.marginWidth = 20;
body.setLayout(layout);
body.addListener(SWT.Paint, event ->
{
Rectangle rect = body.getClientArea();
event.gc.setBackground(body.getDisplay().getSystemColor(SWT.COLOR_WHITE));
event.gc.fillRoundRectangle(rect.x, rect.y, rect.width, rect.height, 20, 20);
});
ProgressBar bar = new ProgressBar(body, SWT.HORIZONTAL);
bar.setMaximum(100);
bar.setSelection(40);
}
這是我所看到的,當我運行這段代碼:
你有沒有在你的shell中設置的佈局,每個組合(包括殼牌)必須有一個佈局。我使用了'shell.setLayout(new GridLayout());' –
@ greg-449佈局的問題是向我的shell添加布局會弄亂我的shell中的其他按鈕和文本字段 - 有沒有辦法做到這一點,而無需向我的外殼添加布局? –
你可以用setBounds搞定,但我無法幫助你,因爲我從來沒有用過。 –