我在我的RCP應用程序中有一個資源管理器,我在其中添加了一個帶有RowLayout的內部組合以顯示各種類別項目。當瀏覽器的寬度調整大小時,我希望類別項目可以換行到新行,並擴大其父組合的大小。SWT佈局如何基於內容調整大小(增長/縮小)
如果我用默認值初始化我的內部組合,沒有任何反應,甚至沒有包裝。如果我把它設置爲搶佔垂直空間,它佔用一半的空間,剩下的一半用於樹,這是醜陋的,而不是想要的。如果我設置提示,我會換行,但其合成的大小不會改變,從而隱藏下一行。我試着添加一個resize事件監聽器並調整我的內部複合。這允許我調整它的大小並顯示所有行,但它會覆蓋並隱藏樹的一部分。我試圖爲樹本身設置setLocation和setSize來移動/調整它的大小,但無濟於事,它不會改變。
這怎麼能工作。我錯過了什麼。是不是有一種簡單的方法來要求佈局,將使用最低要求的高度,沒有更多,但如果需要調整?
感謝您的幫助。
下面的代碼:
innerComposite = new Composite(parent, SWT.NONE);
innerComposite.addListener(SWT.Resize, listenerComp);
GridDataFactory.fillDefaults().hint(10, 30).applyTo(innerComposite);
GridLayoutFactory.fillDefaults().applyTo(innerComposite);
Listener listenerComp = new Listener() {
public void handleEvent(Event event) {
Widget widget = event.widget;
Composite comp = (Composite)widget;
Composite parent = comp.getParent();
Point parentSize = parent.getSize();
Point size = comp.computeSize(parentSize.x, SWT.DEFAULT);
comp.setSize(size);
}
}
而這裏的圖片:
和調整後(注意到,該樹的第一行上覆蓋了):
這將有助於如果你能發佈的[MCVE(http://stackoverflow.com/help/的
Composite
layout(true)
(甚至layout(true, true)
mcve)顯示你的問題 – Baz