rcp程序中能用swing来画图吗?

解决方案 »

  1.   

    可以的, SWT中可以嵌入Swing组件.
    Composite comp = new (parent, SWT.EMBEDDED);
    final frame = SWT_AWT.new_Frame(comp);
    SwingUtilites.invokeLater(new Runnable() {
      public void run() {
        createYourSwingComponents(frame);
      }
    });private void createYourSwingComponents(Frame frame) {
      JPanel panel = new JPanel();
      
      frame.add(panel);
      frame.pack();
    }
    注意一定要用SWT.EMBEDDED, 表示将会在里面插入Swing组件.
    为什么要写SwingUtilites.invokeLater我也不太清楚, 还请知道的达人指教.
    另外如果一个面板上(ViewPart或者EditorPart或者任何面板)同时有Swing和SWT组件, 那么按Tab时光标无法顺利从SWT组件跳到Swing组件. 如果光标已经在Swing组件, 那么只会在Swing面板中循环. IBM说这个问题已经解决了, 可以在IBM的网站上查到这个BUG, 并且2003年就Close了, 不过现在我还是碰到这个问题. 并且有时候swing组件连光标都没办法拿到. 有可能是我的水平还不到位, 持续研究中...