关于SWT学习的一些基本问题

 

楼主format_jade(至尊玉)2005-07-30 22:19:33 Java / Eclipse 提问

 

我是个Eclipse的新手,向各位虚心请教以下问题:  

  1SWT的组件机制好像有些不同于AWT/Swing,它竟然不用add方法,而是设置一个坐标,我就纳闷,我怎么保证我设置的坐标不超出我的父组件而无法显示呢?SWT的组件之间到底是个什么样的关系呢?和AWT/Swing有什么不同呢?  

  2Display是干吗的,它在整个组件的显示中承担什么任务,担当什么角色?  

  3Eclipse带的那个SWTAPI的帮助文档没有索引,哪里可以下到类似jdkchm版的eclipse的有索引查询的帮助文档呢?  

  4,我的编辑器有时候老是显示一部份代码,右边的大纲视图的杰作,如何让编辑器一直显示全部代码?  

  5,对于一个Shell来说,closedisposeopensetVisible有什么区别??  

  6,这段代码是什么意思??

    while(!s.isDisposed()){

If(!d.readAndDispatch()){

d.sleep();//指的是线程sleep还是终止呀,如果sleep了整个程序能退出吗?

}

}

  7,在Eclipse下用SWT写的程序,在Eclipse下执行没有问题,但是导出为.jar文件,执行时说找不到main类,我明明搜索设置了呀,怎么回事??  

  8,用eclipseapi写的程序如果拿到一没有Eclipse而只有java虚拟机的环境下执行,程序上哪找eclipseapi定义的类去呀?这个问题是怎么解决的呀!  

 

  请各位能帮帮小弟,万分感谢   !!

 

 

 

3 FutureStonesoft(丑石)回复于 2005-08-06 00:13:01 得分 10

说实在的,我真的很讨厌   2K_Ice_Bug(速溶咖啡(不加糖))   的傲气,楼主的问题虽然比较初级,但是大家都是这样过来的,只不过当初可能有些人靠自己看文档资料就明白了,有些人则很困惑,很需要大家讨论一下,又何尝不可呢?每个人的理解能力和学习能力本来就不同。楼主列出那么多问题,很有学习的诚意,也并没有什么很愚蠢的问题,这样打击人家的积极性是不对的……  

 

  1SWT是只用设置坐标的吗?呵呵,建立一个SWT控件都指定了其父容器了啊,它们的构造方法一般都有两个参数,一个是父容器,另一个是控件样式如new   SWTControl(parent,   style)。它的定位当然考布局来定义了,最好用的,当然是FormLayout  

  2Display可以理解为一个显示器类(实际上不是),事实上它负责管理各个SWT组件与其运行平台(操作系统)之间的连接,你知道,SWT实际上是利用JNI调用本地OSGUI   API实现。  

  3。好像没有chm格式的帮助文档,但是我觉得Eclipse里的这些帮助很好用啊,虽然没有各个类的索引,但是分类还是相当清晰的  

  4。有这个问题吗?呵呵,你的意思是代码折叠了,想让代码不折叠,是吧?这个可以到Window->Preference->Java->Editor->Foding里设置。  

  5close就是关闭窗口,在内部其实它也是去调用dispose来释放它占用的内存资源的,  

  open是打开窗口、显示窗口、激活窗口,  

  setVisible是设置窗口可见还是不可见的  

  6。这个问题不错,如果你知道操作系统的消息运作机制,那么就不难理解了,SWT有一个监听线程,它处理操作系统发给SWT组件的消息,它是一直在后台运行的  

while(!s.isDisposed()){       //如果窗体没有被释放,那么一直执行。调用Shell.close()方法或者Shell.disposed()时,跳出循环

                                                //也既要求退出程序了,于是便退出程序

if(!d.readAndDispatch()){   //Display读取操作系统给这个窗体程序的消息队列,如果没有读到要求分发的消息,那么该窗体的消息处理线程进入睡眠状态

//如果读到消息队列中有要求分发的消息,那么消息处理线程被唤起处理消息事件

                  d.sleep();

}

}

   

  7。导出为jar的时候,你必须在MANIFEST.MF里指定完整的主类名(包含包名)才可以直接运行啊  

  8。你用到多少Eclipseapi就必须把它们全部一起跟程序发布,不过我想,你指的是独立运行SWT程序吧,那只要几个dll文件就可以了,对于Eclipse3.1,在eclipse/plugins/org.eclipse.swt.win32.win32.x86_3.1.0.jar  

  文件中,有三个dll文件,你把这个jar文件解压出来,将那三个dll文件放到system32目录等等在系统环境变量中有定义的地方就可以了,事实上也可以不解压出来,但个人觉得还是解压出来比较好;       对于Eclipse3.0x,在Eclipse/plugins/org.eclipse.swt.win32_3.0.2/os/win32/x86目录中有两个dll,同样的方法。   

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值