花开有时

花开有时,花落有时,来有时,去有时。不撕扯,只关切;不纪念,只牵挂;不感动,只明白;不寻找,只记得。
随笔 - 24, 文章 - 0, 评论 - 54, 引用 - 0
数据加载中……

2007年7月28日

在导出RCP时把插件打包成文件夹的形式而不是jar包

     摘要: 在使用RCP做项目时,最后的发布一般是用.product文件的Export wizard导出Product,但是导出的插件默认情况下都是以jar包的形式导出,而有的时候会有在项目中使用的第三方包不允许我们在导出的产品中进行发布,但可以允许用户自己下载后进行添加,因为jar包的形式是把所有依赖的jar包也一起打包成jar,因此jar的形式就不能达到我们发布的要求。在试过了很多方法后,我们觉得如果导出的形式改成文件夹的形式是可行的。因为一般来说,发布的插件都会有一个lib文件夹存放依赖的jar,如果我们在build.properties文件中设置不把依赖的lib下jar包发布,并且以文件夹的形式发布插件,让用户自己下载添加到lib文件夹里,这样就ok了。  阅读全文

posted @ 2008-12-02 11:18 花开有时 阅读(2998) | 评论 (3)编辑 收藏

JME研究群(42691979)建立!

    对JME感兴趣的同志请加入JME研究群(群号:42691979),大家一起研究,共同进步!

posted @ 2008-04-29 14:13 花开有时 阅读(1531) | 评论 (2)编辑 收藏

定义Eclipse Editor应该要注意的问题

1.Editor必须要设置icon,否则会出异常。
2.必须要重写EditorPart#init(IEditorSite site, IEditorInput input)方法,内容一般为
this.setSite(site);
this.setInput(input);
this.setPartName(input.getName());
否则会出异常。 3.自定义的EditorInput的以下方法的返回值不能为null:getName()、getToolTipText(),否则会出异常。

posted @ 2008-02-05 13:41 花开有时 阅读(451) | 评论 (0)编辑 收藏

如何自定义SWT Table的每一个Cell的height and width

demonstration code:
Display display = new Display();
Shell shell = new Shell(display);
shell.setBounds(10,10,200,250);
final Table table = new Table(shell, SWT.NONE);
table.setBounds(10,10,150,200);
table.setLinesVisible(true);
for (int i = 0; i < 5; i++) {
new TableItem(table, SWT.NONE).setText("item " + i);
}
table.addListener(SWT.MeasureItem, new Listener() { 
public void handleEvent(Event event) { 
int clientWidth = table.getClientArea().width;
event.height = event.gc.getFontMetrics().getHeight() * 2; 
event.width = clientWidth * 2; 
 } 
});  
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) display.sleep();
}
display.dispose();

说明:黑体部分是关键,主要是要为table添加一个监听器并要用到SWT.MeasureItem属性,如果是在TableView下则需要调用TableView#getTable()方法获得Table再添加监听器。
还需要注意的是:
1)这个特性可能只在Eclipse3.2以上的版本中才有。
2)不能对单行(Item)进行height的设置。
3)如果设置了width,则column的width以它为准。
参考文章:[[1]]http://www.eclipse.org/articles/Article-CustomDrawingTableAndTreeItems/customDraw.htm#_tb10D

posted @ 2008-02-03 16:26 花开有时 阅读(2392) | 评论 (1)编辑 收藏

RCP开发--对PropertyView定义自己的排序器

在RCP开发中难免要使用要PropertyView对自己的一些Object进行属性描述,但是有时候需要对PropertyView (org.eclipse.ui.views.properties.PropertySheetPage)
进行自己的排序(PropertySheetPage有定义好的排序器),经研究发现PropertySheetPage并没有提供方法可以设置排序器,怎么办呢?
方法是实现一个自己的PropertySheetPage,因为在PropertySheetPage中实际上是提供了一个设置排序器的方法的,但是这个方法是受保护的(protected),
并不是公开的(public),所以我们需要实现自己的PropertySheetPage,而且还需要实现自己的排序器PropertySheetSorter。
1.实现自己的PropertySheetSorter:需要继承PropertySheetSorter类并实现sort(IPropertySheetEntry[] entries)方法,具体可以看父类的实现。
2.实现自己的PropertySheetPage:需要继承PropertySheetPage类并重写createControl(Composite parent)方法,
在方法中首先调用setSorter(自己定义的PropertySheetSorter类的对象),然后调用super.createControl(parent)方法。

posted @ 2008-02-03 15:52 花开有时 阅读(664) | 评论 (0)编辑 收藏

定义自己的CellEditor

     摘要: 定义自己的CellEditor其实不难,完整的实例可以看Eclipse的TextCellEditor与ComboBoxCellEditor(原理都差不多,但推荐看CmboboxCellEditor,它的实现简单些)  阅读全文

posted @ 2008-02-03 14:51 花开有时 阅读(3722) | 评论 (1)编辑 收藏

工作随想

  工作差不多有一个月了,突然发现周围的同事都不是名牌大学顺利毕业拥有学位的高材生就是在读的名牌大学实习生。今天发现我旁边的一位是保送到清华的南大学生,呵呵,想想自己没学位,和别人比起来还真是回事啊。真不知道,将来我有成就了,学校会不会给“荣誉学士学位”呢?呵呵,比较好玩。

posted @ 2007-12-26 20:19 花开有时 阅读(288) | 评论 (0)编辑 收藏

java Method类试用

     摘要: 背景:在项目中有一堆javabean,要用在界面上画一堆tableview,要对这一堆tableview进行排序,因此要写一堆sorter类(假如为每个tableview都写一个的话),工作量比较大。
思考:其实这些sorter类都是差不多的,只是调用的javabean不同,方法名称不同,实现的原理,没有什么不同,那么该如何使用一个sorter类就可对所有的tableview进行排序呢?
思考结果:也许可以用Class类与Method类,也就是什么reflect机制。
  阅读全文

posted @ 2007-12-23 14:07 花开有时 阅读(5870) | 评论 (4)编辑 收藏

自定义具有“上图片”下“文字”效果的Button

       SWTButton控件时可以加图片与文字的,但是不能控制图片与文字的位置。比如我要定义一个Button具有这样的效果 ,就靠Button得一些属性和方法做不出来(但是Action可以)。那么如果我就是需要这样的Button,该怎么办呢?我采用的方法是用先加图片,再用GC画一个文字(同时也可以控制文字的大小、样式和位置)

具体代码如下:

//定义一个Button

Button button = new Buttonshell,SWT.NONE;

//加图片

Button.setImage(new Image(Display.getCurrent(),”….图片的路径”);

//加上绘制事件

button.addPaintListener(new PaintListener(){

   public void paintControl(PaintEvent e){

         //设置字体样式等等

         Font font = new Font(Display.getCurrent(),””,8,SWT.BOLD);

         e.gc.setFont(font);

         e.gc.drawText(“haha”,0,0);

}

});                        

ok,基本上就是这样了,不知道有没有更好的方法。

posted @ 2007-12-11 12:57 花开有时 阅读(927) | 评论 (0)编辑 收藏

IFolderLayout#addView()、IPageLayout#addView()与IPageLayout#addStandaloneView()的区别。

 

IFolderLayout#addView():views放在一个IFolderLayout(类似一个文件夹)里,可以叠加view

IPageLayout#addView():view按照方法的参数设置放置,程序运行后可以叠加view

IPageLayout#addStandaloneView():view按照方法的参数设置放置view,程序运行后不能叠加view

posted @ 2007-12-10 12:59 花开有时 阅读(1808) | 评论 (0)编辑 收藏

新生活=退学+找到工作。

  退学了!

背景:就读于北京某军校计算机科学与技术专业,本科,指挥类,已读完4年大学。

退学原因:5公里跑不合格。

结论:此子不适合部队。

结果:大学肄业,士官复原。

找到工作!

待遇:毕业生中上水平。

公司:外企。

目的:学习学习再学习!从事自己喜欢的工作。

事情终于告一段落了,找到了工作使我、父母、所有关心我的人稍稍放下心来。旧的日子已经过去,新的生活开始来临。我要鼓起勇气,打足精神,迎接挑战!

posted @ 2007-12-05 22:09 花开有时 阅读(613) | 评论 (7)编辑 收藏

用Groovy读XML文件。

     摘要: 用Groovy读XML文件。  阅读全文

posted @ 2007-09-25 10:12 花开有时 阅读(1950) | 评论 (0)编辑 收藏

Ok!用DOM写XML文件!

     摘要: 用DOM写XML文件!  阅读全文

posted @ 2007-09-25 10:11 花开有时 阅读(1402) | 评论 (0)编辑 收藏

成功!用SAX读取XML文件。

     摘要: 成功!用SAX读取XML文件。  阅读全文

posted @ 2007-09-24 16:55 花开有时 阅读(1961) | 评论 (1)编辑 收藏

成功!用DOM读取XML文件。

     摘要: 成功!用DOM读取XML文件。  阅读全文

posted @ 2007-09-24 16:54 花开有时 阅读(2185) | 评论 (0)编辑 收藏

失败!读取XML文件

     摘要: 失败!读取XML文件  阅读全文

posted @ 2007-09-24 11:28 花开有时 阅读(1699) | 评论 (0)编辑 收藏

AbstractGame类分析

     摘要: JME提供了一个包:com.jme.app,这个包里提供了一些开发一个JME应用程序的基本类,其中AbstractGame类是基本的基本,这个包中的其他类都是直接或间接继承这个类。  阅读全文

posted @ 2007-09-24 11:25 花开有时 阅读(806) | 评论 (7)编辑 收藏

把JME程序“嵌入”到SWT界面

     摘要: 但是在一些应用中,我需要把JME的显示结果在图形用户界面(比如说用Swing或者SWT/Jface做的图形用户界面)上显示出来,而不是又重新弹出一个窗口--这样怪麻烦,也不方便用户操作。对于Swing,JME提供了有一套方法可以方便的把JME程序的显示效果在Swing做的界面是显示出来(具体做法可参考JME提供的例子),但是对于SWT,JME就没有说明该怎么做了(似乎对于SWT来说有些不公平)。虽然没有说明,但是实际上我们还可以通过以Swing为过渡,使SWT实现这样的功能。不过这样好像有些麻烦了,因为自Eclipse3.2后,SWT提供了一个类--GLCanvas,可以使OpenGL在SWT的界面上绘制3D图形。这样就没有问题了,JME可以直接在SWT界面中绘制图形图像,因为JME本身是封装了OpenGL的API。
  阅读全文

posted @ 2007-08-08 16:57 花开有时 阅读(1344) | 评论 (0)编辑 收藏

MonkeyWorld3D--JME辅助开发工具

  前天我发了一篇《JME麻烦之一:模型》,说是在JME中组织模型太麻烦,没有像界面开发那样的所见即所得编辑器。昨天我上JME官网上看了看,却发现原来官网上提供的MonkeyWorld3D软件正是这类工具。下载下来使用看看。给我的感觉是太麻烦,拖动不方便,像移动模型、转动模型、大小变换之类的操作的不方便。导入模型也不方便,还需要一个个导入。真是还不如我在程序里手工输入数据调试来得便捷。不方便的原因也许是我对这软件不熟悉、不熟练,如果可能的话真想看看熟练的人是怎么做的,但是这连一个说明怎么使用的文档都没有。开源就是这方面不好。
  另外说一下,这个软件是用SWT与JFace做的界面。

MonkeyWorld3D下载地址:这里

posted @ 2007-08-03 15:58 花开有时 阅读(1309) | 评论 (0)编辑 收藏

JME麻烦之一:模型

    最近把JME例子的源代码看了一遍,对使用JME有了初步的了解,看完之后就打算自己编一个例子试试。
    使用JME进行3D开发无非就是先用3DMax之类的软件进行3D建模,然后把建好的模型通过JME中相应的类转化为JME理解的形式,再在显示屏时显示出来,最主要的部分一是建模,二是对模型的操作。
    今天通过写一个例子,发现模型的转化并不困难,几行代码就搞定了,但是对模型在屏幕中应该显示多大和应该放在什么位置却不好把握。比如说我要显示一台笔记本电脑,由于我要操作笔记本--按笔记本电脑的某个键要产生相应的响应,所以我不能在建模中把笔记本的按键“建”为一个整体,我需要把笔记本电脑的基础建立起来,再把每个按键建立起来,然后在JME中把按键“加”到笔记本电脑的基础上--这样才能对笔记本电脑进行操作,比如说按一个有按下去的动作,那么各个按键和位置基础的位置和它们之间的大小关系就要符合常理才有真的感觉。但是在JME中好像没有那么“智能”能使物体之间的相互关系符合常理,那应该怎么办呢?在JME中,物体之间的位置是靠三维空间坐标设定的(也就是x,y,z),大小是按比例设定的(也就是百分比,1为原模型大小),那么如果我要使物体之间的位置、大小关系符合常理,就要通过很多次的尝试才有可能成功,这使我感到非常麻烦。如果我有很多物体需要显示,那么我不是非常频繁的尝试吗?就像是如果没有可视化进行界面编辑,那么要做一个美观的界面将会是一件多么痛苦的事,想想就知道在这上面要花费很多时间。
    在官网上看例子,看有的出现了这个问题,想找找看,结果上面一句话把我给噎回去了:为什么要放在这里呢?那是因为经过了很多次试验得到的(原文大意)。
    我不知道3DMax之类的软件在建模时是不是可以直接把模型的建立符合常理(我不负责建模),如果能符合常理的话直接导入就好了,但就我今天用别人做的模型写的程序来看,还是需要我进行调整的。
    不过好像JME官网上有一个MonkeyWorld3D的软件,可能是管3D可视化设计的,以前下过,但没弄懂怎么用。明天上官网看看,找找有没有这方面的解决办法。
     不知道有哪位仁兄有这方面的经验,望稍稍告知一二,在下在这里多谢了。

posted @ 2007-08-02 00:26 花开有时 阅读(1529) | 评论 (7)编辑 收藏

使用SWT写一个基于JGroup的简单局域网聊天程序

     摘要: JGroup简要说明:JGroup是一种可靠的群组通讯工具,用Java实现。JGroup以IP多播为基础并且提供可靠性和群组功能。  在JGroup中有一个Chat.java类,是基于Swing的一个简单的局域网聊天的例子。在这里我按照这个例子的把局域网聊天的功能用SWT实现。  本以为不会出现什么问题但是在实现的时候发现两个同局域网的客户端不能互连,找不到对方。在调试的时候发现只要是使用了SWT...  阅读全文

posted @ 2007-07-28 09:50 花开有时 阅读(3103) | 评论 (2)编辑 收藏