程序主要是实现数据库管理
主界面显示数据库的全部记录
有添加功能事件处理过程:
addbtn=new Button(panel,SWT.NONE);
addbtn.setText("添加");
addbtn.addSelectionListener(new SelectionAdapter(){
         public void widgetSelected(SelectionEvent event){        
         newaddscheduler=new Addscheduler(display);///子界面 数据的输入界面
         AllBean ab=new AllBean();
//             scheduler_tableViewer.setContentProvider(new ContentProvider());
//                 scheduler_tableViewer.setLabelProvider(new TableLabelProvider());
                 scheduler_tableViewer.setInput(ab.getschedulers());
                 scheduler_tableViewer.refresh();
         }
         });
子界面的退出按钮只有 shell.dispose();我不知道哪里错了呀...弄了一个早上..完全找不到北...因为它提示的是这个异常..我还尝试过加上被注释掉的那两种代码..可是添加后异常就变成" org.eclipse.swt.SWTException: Widget is disposed...到底是什么问题呢? 我刚刚开始学SWT..先谢谢帮忙...

解决方案 »

  1.   

    assertion failed: ContentViewer must have a content provider when input is set!
    应该是scheduler_tableViewer.setInput(ab.getschedulers()); 吧!
    org.eclipse.swt.SWTException: Widget is disposed
    是因为你的对象已经销毁了,你不能对已经销毁的对象进行任何操作!
      

  2.   

    viewer都需要搭配ContentProvider和LabelProvider使用,ContentProvider提供数据,LabelProvider提供显示。
    这是JFace的基础
      

  3.   

    一楼的说的很对,如果你还要操作这个界面的话建议你不要 销毁他(dispose())
    最好用 .setVisible(boolean);
      

  4.   

    assertion failed: ContentViewer must have a content provider when input is set!
    应该是scheduler_tableViewer.setInput(ab.getschedulers()); 吧! 
    我也知道是这句造成的..可是我后来把那两句代码添加上后,就变成了第二种异常..
    第二种异常我就不知道怎么解决了.. scheduler_tableViewer.setContentProvider(cpro);
    scheduler_tableViewer.setLabelProvider(tlpro);
    我前面已经设置了ContentProvider和LabelProvider了...
    事件里面处理的是更新...所以我没有再设置...
    谢谢你们的帮忙..希望能再提示下..
      

  5.   

    一楼的说的很对,如果你还要操作这个界面的话建议你不要 销毁他(dispose())
    最好用 .setVisible(boolean);我代码里面没有写任何销毁的代码呀...运行的时候也是直接打开子界面..主界面还是在那里的..
      

  6.   

    ContentProvider() 内容提供器有问题,仔细看看。
      

  7.   

    你在添加这两句scheduler_tableViewer.setContentProvider(cpro);
    scheduler_tableViewer.setLabelProvider(tlpro);
    的时候scheduler_tableViewer早已经被销毁了,所以会出现swt的错误,你只要把scheduler_tableViewer改为static类型的话那么问题就全部解决了,就不会在销毁掉