活活,,虽然一直在用Eclipse,对swt了解实在不多。。-_-!!

解决方案 »

  1.   

    那您觉得您做出来的程序效率如何呢?
    目前我的项目有两个选择,用JAVA或者用VC,
    VC的程序框架不如JAVA的好,MFC的东西实在是不便于理解,相比之下JAVA非常简单一致.项目组使用JAVA经验比VC要丰富一些.以前用JAVA开发Service比较多.
    并且服务程序用JAVA的可能性比较大,这样一来用C的话通讯就可能出现问题,当然也是可以解决的.
    JAVA的问题在于,JDK中的图形界面(AWT)效率底,Eclipse使用SWT,效率提高了,但是又是使用了JNI.如果他的效率仍然和VC相差很多,那么我为什么要用他呢?
      

  2.   

    用eclipse是用来写代码的,非常舒服。swt虽然很优秀,但是学起来太麻烦,资料少。eclipse也有VE editor可以设计UI,不错。
      

  3.   

    swt是eclipse自己用的,不推荐用来写程序。
      

  4.   

    回复人: wing9501(little bird) ( ) 信誉:100  2004-01-18 15:41:00  得分:0 
       swt是eclipse自己用的,不推荐用来写程序。
     -------------------我也觉得使用SWT的部署会很复杂,
    您的说法是怎样得来的呢?是有资料这么说,还是您自己的经验?您部署过SWT程序吗?是不是真的困难重重.
      

  5.   

    刚来新公司小组里4、5个牛人都用eclipse,我也得用
      

  6.   

    顶一下了常用,不过作后台或者是web,没有作于swt
      

  7.   

    我对swt基本有点研究
    对eclipse project来说,swt是对应于awt的
    jface是对应于swing的。
    如果熟悉awt,swing的话,那么是很好上手swt/jface的。
    你可以去看ibm.com开发者论坛提供的两个例子
    最好也去看eclipse.org提供的例子。
    如果去sourceforge的话,也很容易找到关于swt/jface的项目。从部署上来说,我不明白swt部署会有什么问题。它其实就是需要一个dll,你把eclipse/plugin/swt下面的一个swt-awt-win32-3030.dll,swt-win32-3030.dll拷贝到j2se目录下bin就可以了么。如果你把它加到path里面那也可以。总之swt需要这个dll支持,仅此而已。swt/jface主要提供了标准化的界面,已经相对于awt/swing更快的速度。整个eclipse就是用swt写的。你不妨体会一下和win native program有什么速度上的差异。有趣的是,ibm自称是awt/swing 的一个强大的挑战者,而sun则对swt/jface指责为另外一个awt/swing架构的开发品。在3.0M5版本中,已经能够整合swt和awt,在可以预见的将来,swt/awt,jface/swing走向融合是明智的。
      

  8.   

    用jface写过一个编辑器,可惜效率太差最终放弃。建议你不要用jface写桌面应用,因为jface目前也在不断发展完善中。M3和M5就有不小差别
    这是界面部分源代码,删去了无关的,留下了和界面有关的,添加了必要的注释。
    放上来的目的纯粹是因为swt/jface的各种入门资料实在太少了,资源共享可以帮助更多的人
    代码可能写的有点差,随便看看就好了/**
     * <pre>
     *  main editor of the project.
     * </pre>
     * 
     * @version 1.0.0 2003-10-27
     * @author allen
     *                <dl>
     *                <dt><b>change version</b></dt>
     *                <dd>
     * 
     * <pre>
     *  0.0.1 2003-12-02 create author : allen
     * </pre>
     * 
     * </dd>
     *                </dl>
     */
    public class JEditor extends ApplicationWindow {
    /**
     * text presentation
     */
    private TextPresentation textpresent;
    /**
     * text viewer
     */
    private SourceViewer texteditor;
    /**
     * document
     */
    private Document document; /**
     * sourceview configuration
     */
    private Configuration configur; //constructor
    JEditor() {
    super(null);
    document = new Document();
    configur = new Configuration();
    //menu bar & status bar created here;
    addMenuBar();//添加菜单
    addStatusLine();//添加状态栏
    }
    /////////////////OVERRIDE////////////////////////////////////////
         //改写基类,构造主界面
    protected Control createContents(Composite parent) {
    //////////////set title///////////////
    getShell().setText("JEditor");
    //////////////create viewer//////////////
    CompositeRuler ruler = new CompositeRuler();
    ruler.addDecorator(0, new LineNumberRulerColumn());
    texteditor = new SourceViewer(parent, ruler, SWT.BORDER | SWT.MULTI | SWT.V_SCROLL);
    texteditor.setDocument(document);
    /////////////configure//////////////////
    texteditor.configure(configur);
    /////////////partitionerlistener///////////
    IDocumentPartitioner documentPartitioner = createJavaPartitioner();
    document.setDocumentPartitioner(documentPartitioner);
    documentPartitioner.connect(document);
    document.addDocumentPartitioningListener(new JDocumentPartitioningListener(this));
    texteditor.addTextListener(new JTextInputListener(this)); return texteditor.getControl();
    }
             //改写基类,创造菜单
    protected MenuManager createMenuManager() {
    MenuManager bar_menu = new MenuManager("");
                      //创造菜单栏
    MenuManager file_menu = new MenuManager("ファイル(&F)");
    bar_menu.add(file_menu);
                      //创造菜单选项,OpenAction,SaveAction都是继承自Action
    file_menu.add(new OpenAction(this));
    file_menu.add(new SaveAction(this));
    return bar_menu;
    }
             //改写基类,创造状态栏
    protected StatusLineManager createStatusLineManager() {
    StatusLineManager statusLine = new StatusLineManager();
                      //创造状态栏的两个"内容",我也不知道怎么说
    StatusLineContributionItem status1 = new StatusLineContributionItem("bytes");
    status1.setText("BYTE COUNT:");
    statusLine.add(status1); status1 = new StatusLineContributionItem("info");
    status1.setText("");
    statusLine.add(status1);
    return statusLine;
    } // create Document Partitioners
    private IDocumentPartitioner createJavaPartitioner() {
    return new DefaultPartitioner(new JavaPartitisonScanner(), new String[] { JavaPartitisonScanner.XML_COMMENT, JavaPartitisonScanner.XML_MULTILINE_COMMENT, JavaPartitisonScanner.STRING, JavaPartitisonScanner.XML_TAG });
    }
    }
    运行代码:
    public static void main(String[] args) {
    JEditor editor = new JEditor();
    editor.setBlockOnOpen(true);
    editor.open();
    Display.getCurrent().dispose();
    }
      

  9.   

    还是没有整理清楚
    private IDocumentPartitioner createJavaPartitioner() 
    这个方法和相关调用都可以删掉,这个只是提供了对文档进行匹配
    和界面无关的
    addListener之类的都可以不要,总之如果编译不过,只要把出错的delete掉就可以
    最后路径需要swt.jar和jface.jar
    dll文件需要在j2se/bin目录下
    import之类的太长,没有放上来
      

  10.   

    去sf.net上看看,现在排名第二的项目就是基于SWT的。
      

  11.   

    回楼主:
      小弟没有用swt和jface做过开发,呵呵,因为我从来没有用java写应用程序界面。
    在读eclipse源码的时候感觉swt不适合我们用来做开发。
    第一:资料少,学习起来费劲
    第二:用户很少,不是标准