在我的编辑器中,我有一个包含顶部标签控件的复合材料,只要用户在下面任何一个字段中输入错误输入,就会以红色闪烁信息性信息。文本会根据用户的输入动态变化。我能够实现在错误输入上显示红色文本并在标签中不显示任何正确输入的效果。
但是,我希望当标签合成中没有错误显示时,下面其余字段会在显示中向上移动。当显示错误时,错误应该出现在它的位置(在所有其他字段的顶部)推动其他字段。
有没有办法在不重新绘制所有控件的情况下实现此效果?
答案 0 :(得分:0)
是的,请致电父母layout (true)
。
例如,我有一个视图,顶部有一个搜索栏,可以切换其可见性。我有一个创建搜索组合的方法和一个删除它的方法:
private void createNameSearchBar () {
mySearchControl = new CardSearchControl (myViewComposite, SWT.NONE);
mySearchControl.setSearchListener (this);
}
private void disposeNameSearchBar () {
mySearchControl.dispose ();
mySearchControl = null;
}
private CardSearchControl mySearchControl = null;
private Composite myViewComposite;
private boolean mySearchBarState;
要隐藏或显示搜索栏控件,我调用此方法(myViewComposite是拥有搜索栏和所有其他控件的顶级控件):
public void setSearchBarState (boolean show) {
mySearchBarState = show;
if (myViewComposite == null || myViewComposite.isDisposed ())
return; // no work to do
if (mySearchBarState && mySearchControl == null) {
createNameSearchBar ();
mySearchControl.moveAbove (null);
myViewComposite.layout (true);
} else if (!mySearchBarState && mySearchControl != null) {
disposeNameSearchBar ();
myViewComposite.layout (true);
}
}