• SWT JFACE 开发配制


    eclipse 3.6中开发RCP:
      要用到SWT/JFace 但在测试SWT时遇到了问题:
    需要的库文件有哪些呢?打开eclipse安装目录下的plugins文件夹,我们需要找到以下jar文件:
    l         org.eclipse.swt_3.x.x.jar
    l         org.eclipse.jface_3.x.x.jar
    l         org.eclipse.core.runtime_3.x.x.jar
    l         org.eclipse.ui.workbench_3.x.x.jar
     打开工程的properties对话框,然后选择Java Build Path中的Libraries选项卡,将这些jar导入进来
    第三步:为你的java程序添加本地库文件。如果你使用windows的话,你可能注意到在eclipse的plugins目录下还有一个org.eclipse.swt.win32_3.x.x.jar,将这个jar解压以后在os/win32/x86目录下有几个dll文件。这几个dll为swt通过JNI访问windows本地API提供了接口,我们需要将使java程序在启动时候即能够访问它。你可以有多种办法实现这个目的:
    最简单的办法就是直接把这几个文件拷贝到你jdk的bin目录下
    第一道门槛 : java.lang.NoClassDefFoundError: org/eclipse/core/runtime/IProgressMonitor
     
    很多人说导入org.eclipse.core.runtime_x.x.x.jar 就ok,但你自己试试就知道并不是所有版本的org.eclipse.core.runtime_x.x.x.jar 里都有IProgressMonitor这个class.

    所以即使你导入了org.eclipse.core.runtime_x.x.x.jar 到project也可能无济于事。

    去plugins下面找找org.eclipse.equinox.common.x.x.x.jar,然后导入到project ,你会发现IProgressMonitor 悠然的躺在那里。

     

    第二道门槛 :
     Exception in thread "main" java.lang.UnsatisfiedLinkError: no swt-win32-3139 in java.library.path

     因为SWT使用了JNI调用C,所以你需要把相对应版本的dll文件(swt-win32-xxxx.dll)copy到C:/windows/system32下面.

     还可以把5个DLL放到JAVA\BIN下面
    第三道门槛 : Exception in thread "main" java.lang.NoClassDefFoundError: org/eclipse/core/commands/common/EventManager

         解决了上面两个问题以为大功告成,其实还差一步。导入org.eclipse.core.commandsx.x.x.jar到project中,我们的第一个SWT/JFace就能跑起来了。

     

    要导入的JAR:


    D:\J2EE\eclipse-rcp-3.6\eclipse\plugins\org.eclipse.swt.win32.win32.x86_3.6.0.v3650b.jar
    D:\J2EE\eclipse-rcp-3.6\eclipse\plugins\org.eclipse.jface_3.6.0.I20100601-0800.jar
    D:\J2EE\eclipse-rcp-3.6\eclipse\plugins\org.eclipse.core.runtime_3.6.0.v20100505.jar
    D:\J2EE\eclipse-rcp-3.6\eclipse\plugins\org.eclipse.ui.workbench_3.6.0.I20100603-1100.jar
    D:\J2EE\eclipse-rcp-3.6\eclipse\plugins\org.eclipse.equinox.common_3.6.0.v20100503.jar
    D:\J2EE\eclipse-rcp-3.6\eclipse\plugins\org.eclipse.equinox.event_1.2.0.v20100503.jar
    D:\J2EE\eclipse-rcp-3.6\eclipse\plugins\org.eclipse.core.commands_3.6.0.I20100512-1500.jar

    代码:

    package com.swtjface.test;

    import org.eclipse.jface.window.*;
    import org.eclipse.swt.*;
    import org.eclipse.swt.widgets.*;

    public class HelloSWTJFace extends ApplicationWindow {
     public static void main(String[] args) {
      HelloSWTJFace awin = new HelloSWTJFace();
      awin.setBlockOnOpen(true);
      awin.open();
      Display.getCurrent().dispose();
     }

     public HelloSWTJFace() {
      super(null);
     }

     protected Control createContents(Composite parent) {
      Text helloText = new Text(parent, SWT.CENTER);

      helloText.setText("Hello SWT and JFace!");
      parent.pack();
      return parent;
     }

    }

    package com.swtjface.test;

    import org.eclipse.swt.SWT;
    import org.eclipse.swt.widgets.Display;
    import org.eclipse.swt.widgets.Shell;
    import org.eclipse.swt.widgets.Text;

    public class HelloSwt {
     public static void main(String[] args) {
      Display display = new Display();
      Shell shell = new Shell(display);
      Text helloText = new Text(shell, SWT.NONE);
      helloText.setText("Hello SWT!");
      helloText.pack();

      shell.pack();
      shell.open();
      while (!shell.isDisposed()) {
       if (!display.readAndDispatch())
        display.sleep();
      }
      display.dispose();
     }
    }


     

  • 相关阅读:
    【基础】jquery全选、反选、全不选代码
    【基础】jquery全选、反选、全不选代码
    收集一些程序员励志经典名言
    收集一些程序员励志经典名言
    收集一些程序员励志经典名言
    防止表单重复提交的解决方案整理
    Git使用教程
    2019牛客暑期多校训练营(第二场)J Subarray
    Hibernate-配置
    与项目欧拉速度比较:C vs Python与Erlang vs Haskell
  • 原文地址:https://www.cnblogs.com/zqmingok/p/1798897.html
Copyright © 2020-2023  润新知