独自等待
那曾经从自己身边溜走的人……
posts - 0,comments - 3,trackbacks - 0
    在SWT编程中,用GirdLayout布局好组件时,有时候会碰到这种情况:某些组件可能在运行态时需要根据选项被隐藏/显示。通常我们会把这组组件放置在同一个Composite中,并设置Composite.setVisible(false)就可以了,但是若该Composite位于GridLayout布局的中间位置,将其隐藏后,仍然会留下空白区,后面的组件并不会收缩上去重新布局,经过试验找到了一个比较完美的解决办法,如以下的代码片段:
        switch (iIndex) {
            
case 0{
                
if(grpExpression.getLayoutData() instanceof GridData) {
                    GridData gd 
= (GridData)grpExpression.getLayoutData();
                    gd.heightHint 
= -1;
                    grpExpression.setLayoutData(gd);
                    grpExpression.layout(
true);
                    rootComposit.layout(
true);
                }

                grpObject.setVisible(
false);
                
break;
            }
 
            
case 2{
                
if(grpExpression.getLayoutData() instanceof GridData) {
                    GridData gd 
= (GridData)grpExpression.getLayoutData();
                    gd.heightHint 
= -22;  //设成非-1的任何小于0的值即可
                    grpExpression.setLayoutData(gd);
                    grpExpression.layout(
true);
                    rootComposit.layout(
true);
                }

                grpObject.setVisible(
true);
                
break;
            }

        }


    上例中grpExpression位于布局中段,grpObject位于布局末尾
posted on 2008-06-02 10:01 自由 阅读(1019) 评论(0)  编辑  收藏 所属分类: SWT

只有注册用户登录后才能发表评论。


网站导航: