是这样的,最近在搞swt中嵌入一个frame,因为要画一个二维图,所以要swt嵌入frame才好用,于是我有一个frame
Composite composite = ...
final java.awt.Frame frame = SWT_AWT.new_Frame(composite);  
接下来我在frame中add了一个类,这个类是继承jpanel的,而jpanel中显示一张图,这张图是根据用户自己open file选择的,我的目的就是实现这个open file之后能够显示不同的图,不知道这个可以怎么实现:
我尝试了一下代码,似乎不行,有人能解决不?
每次用户选择了一个不同的file调用一下代码:
frame.removeAll();
frame.add(那个结成了jpanel的类实例);//前面已经有代码针对用户选择的file构造好了这个特定的类实例
frame.pack();
frame.setVisible(true);叩谢大牛们帮小弟我解决一下哈~

解决方案 »

  1.   

    为什么要把frame中的东西都removeAll呢?里面不就只有一张图片吗?将里面那张图片保留一个引用,然后在用户事件监听方法里面先获取用户选择的文件,然后在把引用指向新选择的文件不就行了吗。
      

  2.   

    没必要在SWT中嵌入JPanel,把问题复杂化了。
    SWT有Canvas控件,也可以显示图片的。
      

  3.   

    额,可能小弟没把问题说清楚,那个file其实是一个数据文件xml,然后我根据这个数据文件可视化那些数据生成的是一张图,这里的图不是所谓的jpg等格式的图啦,我现在的做法(行不通),就是每次open file 以后重新生成一个类,这个类就是用来可视化那些数据的继承了jpenal的类,然后把原先frame的内容都清空,重新绘制,2楼的做法应该不行吧我觉得,重新指向又没用的咯,frame是肯定要刷新的吧~
      

  4.   

    哦,LZ一定要在SWT中嵌入Swing的。
    那现在有什么问题呢?顶楼说得不清楚。
      

  5.   

    把图片所在的面板
    setVisible(false);接着setVisible(true);
    可以得到刷新的效果