我在shell下建了Composite,并且在Composite下添加其他组件
final Composite c=new Composite(shell,SWT.None);
new SystemMenu(shell,c,display);
GridData gPanelData = new GridData(SWT.FILL, SWT.FILL, true, true);
c.setLayoutData(gPanelData);
new Content(shell,c,display);//在Composite下添加其他组件的方法,c指定的第一个Composite
然后我通过一munu的addSelectionListener()方法想调用另一个Composite,  不知道怎么实现,我开始是这样写的:
                 item11.addSelectionListener(new SelectionAdapter(){
   public void widgetSelected(SelectionEvent e){ 
                                   c.dispose(); 
                                   final Composite c1=new Composite(shell,SWT.None);  
   new ClassListsystem(shell,c1,display);//在Composite下添加其他组件的方法,c1指定的第二个Composite
   }
   });
可第二个Composite显示不出来
本人是菜鸟,请 高手指点那!!!!!!

解决方案 »

  1.   

     你试试在你的 widgetSelected(SelectionEvent e) 方法体内加上 :  Display.getCurrent().getActiveShell().pack();
      

  2.   

    嗯!!嘿嘿,不客气 多交流共同提高
    BTW:lz你真慷慨 这么多分就为这一句
      

  3.   

    谢谢,部分问题解决了
    可是我用另一menu,用同样的方法调用另一Composite时,前面的Composite却没消除,不知道怎么解决
      

  4.   

     你在widgetSelected(SelectionEvent e)方法里实例化了一个新的Composite  c1,另一个Menu实例化新的Composite之前 要先c1.dispose()吧
      

  5.   

    谢谢了
    Composite的动态调用实现了,可SHELL的size在调用不同Composite时回变化,
    好像是Display.getCurrent().getActiveShell().pack();的问题
    请高手指点啊!!
      

  6.   

    确实有这个问题
    每次执行pack()方法的时候 shell会自动适应大小 也就是之前的setSize()方法失效
    我不得已用最愚蠢的方法重新setSize()一次 这样做很不合理
    请真正的高手现身指点!!
      

  7.   

    还是很感谢!!!!!!!
    现在我是在同一Composite下面调用一些组件,以前是不同Composite来展示界面
    执行情况还蛮好