我在一個composite0中放置了三個複合(1,2,3),因此它們都根據composite0.setLayout(new FormLayout())
設置了它們的佈局。現在我遇到的問題是,我將composite3隱藏起來:composite3.setVisible(false);
(我不想刪除數據,仍然需要該組件,但不希望它顯示在UI上),現在componite2之後存在很大差距。如何消除較大的差距(用於放置composite2)?先進的謝謝你!SWT:刪除複合中的不可見組件空間
1
A
回答
-2
FormData data = new FormData();
data.left = new FormAttachment(0, 100, EditorPanel.SPACING);
data.top = new FormAttachment(section1, EditorPanel.SPACING);
data.height = 0;
data.width = 0;
addSectionFormData(a, b, c);
a.setLayoutData(data);
b.setLayoutData(data);
這個問題解決了! :)
1
Snippet 313官方的SWT例子應該可以幫到你。您基本上在composite3上設置了不同的FormData
,具體取決於您是要顯示還是隱藏它。
+0
您好,感謝您的回覆!我有問題,如果我將FormData設置爲composite1和composite2,然後刪除整個composite0.setLayout(新的FormLayout())的東西,那麼整個composite0將不會顯示在用戶界面上:( – huao 2012-07-06 18:15:34
0
我有一個數據綁定可觀察的,但它假定控件在一個GridLayout。我使用它來顯示和隱藏嚮導頁面中的組合和小部件,具體取決於複選框的選擇狀態。
要使用它,像這樣的東西設置它:
DataBindingContext dbc = new DataBindingContext();
Button button = new Button(composite, SWT.CHECK);
IObservableValue target = SWTObservables.observeSelection(button);
dbc.bindValue(target, new HideControlObservable(someControl));
這裏是觀察到:
/**
* Observable to control the presence (visibility and size) of any control
* within a grid layout.
* <p>
* Changing the value of this observable will do two things:
* <ol>
* <li>Set the visibility of the control</li>
* <li>Set the size of the control to zero when the control is invisible.</li>
* </ol>
* So, when using this observable, the control will not only be invisible,
* but it will be gone, completely. Normally, when setting the visibility of
* a control to <code>false</code>, the control will not be displayed but
* will still take all the space on the screen.
* </p>
* <p>
* <strong>Note:</strong> this observable works for controls within a
* <strong>GridLayout only</strong>.
* </p>
*/
public class HideControlObservable extends WritableValue implements IValueChangeListener {
private final DataBindingContext dbc = new DataBindingContext();
private final ISWTObservableValue sizeObservable;
private final Point size = new Point(0, 0);
private final Control control;
public HideControlObservable(Control control) {
super(control.getVisible(), Boolean.class);
this.control = control;
UpdateValueStrategy never = new UpdateValueStrategy(UpdateValueStrategy.POLICY_NEVER);
dbc.bindValue(SWTObservables.observeVisible(control), this, never, null);
sizeObservable = SWTObservables.observeSize(control);
sizeObservable.addValueChangeListener(this);
if (!control.isVisible()) {
GridData gd = (GridData) control.getLayoutData();
if (gd == null) {
gd = new GridData();
}
gd.exclude = true;
control.setLayoutData(gd);
control.setSize(new Point(0, 0));
}
}
@Override
public void doSetValue(Object value) {
super.doSetValue(value);
Boolean bool = (Boolean) value;
if (bool) {
GridData gd = (GridData) control.getLayoutData();
if (gd == null) {
gd = new GridData();
}
gd.exclude = false;
control.setLayoutData(gd);
control.setSize(size);
control.getParent().layout();
} else {
GridData gd = (GridData) control.getLayoutData();
if (gd == null) {
gd = new GridData();
}
gd.exclude = true;
control.setLayoutData(gd);
control.setSize(new Point(0, 0));
control.getParent().layout();
}
}
@Override
public synchronized void dispose() {
sizeObservable.dispose();
super.dispose();
}
@Override
public void handleValueChange(ValueChangeEvent event) {
Point newSize = (Point) event.getObservableValue().getValue();
if (newSize.x > size.x) {
size.x = newSize.x;
}
if (newSize.y > size.y) {
size.y = newSize.y;
}
}
}
相關問題
- 1. 從不可見的Ui小部件中刪除空間
- 2. SWT複合和組
- 3. 如何刪除DatePickerDialog中的額外空間空間(在Android M&N上可見)?
- 4. PHP刪除重複空間
- 5. 用R中的「by」刪除空組合
- 6. SWT中的可對焦複合材料
- 7. SQL刪除組合中的重複項
- 8. 刪除組合框中的重複項
- 9. 刪除不間斷空間?
- 10. 刪除GridView組之間的空間
- 11. SWT在組中創建滾動複合
- 12. 從組合框中刪除空白值。
- 13. 不從NSDate中刪除時間組件
- 14. 獲取SWT中組合組合內的所有複選框
- 15. 當代理在GridView中不可見時刪除空格
- 16. 從組合框中刪除重複
- 17. 在excel中刪除不可見字符
- 18. 刪除SWT TableEditor
- 19. 不可刪除/不可見的.txt文件
- 20. 刪除複選框之間的空格
- 21. 的Java SWT添加標籤不可見
- 22. 刪除python中的空間不工作
- 23. 刪除onchange事件可見的DOM
- 24. SWT Eclipse組合事件
- 25. 刪除特定組合的重複項
- 26. 刪除視圖不可見在GridView的
- 27. [java]刪除空間空間
- 28. RCP SWT Eclipse - 清除複合容器
- 29. 刪除空間
- 30. 刪除空間
嗨,你可以請加強這個代碼片段對於那些不知道你的代碼的人來說並沒有太大的好處,例如類'EditorPanel',方法'addSectionFormData()'和變量'a','b'和'C' – 2013-02-19 19:58:59