2004年07月27日

我晕,这2天遇到的问题都不好解决啊!extens button的问题还没空解决,不过是为了界面好看,也不着急。前阵子用jmf写的连接softcam的代码段在没加swt代码的时候跑的好好的,一加swt的界面代码就出错!开始是老早不到capture设备,结果捣鼓了好一阵子才发现是为了运行swt而加的-Djava.library.path=(eclipse install path)\plugins\org.eclipse.swt.win32_3.0.0\os\win32\x86 虚拟机参数的问题。把参数去掉,把swt-win32-3062.dll copy到project下。问题解决,但又有了新问题。在用jmf去得到capture设备的DataSource时,抛出了An unexpected exception has been detected in native code outside the VM。一大串信息,我倒!google了一阵子,没有头绪。难道swt因为使用了本地代码来实现界面就和jmf有冲突?反正我是不知道了,希望eclipse的newsgroup里能有人给我一点提示! God bless me!

我自己扩展了swt的button,想在鼠标移动到button上时改变button的背景色,可是button却没有重绘,有人知道怎么做吗?实际上代码是执行到了println()语句了的。我的代码如下:

public class ZButton extends Button{  private Color background = null; private Color foreground = null; private Color beginColor = null; private Color endColor = null;

 public ZButton(Composite arg0,int arg1) { super(arg0,arg1); if(background == null) { background = new Color(arg0.getDisplay(), 125, 125, 125); foreground = new Color(arg0.getDisplay(), 255, 255, 255); //beginColor = new Color(arg0.getDisplay(), 115,140,165); beginColor = new Color(arg0.getDisplay(), 255,0,0); endColor = new Color(arg0.getDisplay(), 185,200,210); } setBackground(beginColor); //setForeground(beginColor);

 addMouseTrackListener(new MouseTrackListener() { public void mouseHover(MouseEvent e) { }

 public void mouseExit(MouseEvent e) { setBackground(background); redraw(); System.out.println("mouse exit button"); }

 public void mouseEnter(MouseEvent e) { setForeground(beginColor); redraw(); System.out.println("mouse enter button"); } });

 addDisposeListener(new DisposeListener(){ public void widgetDisposed(DisposeEvent arg0) {     background.dispose();     foreground.dispose();     beginColor.dispose();     endColor.dispose();   }  }); }}

2004年07月26日

    死党波波结婚了!24日,参加了他和娟的婚礼。很多同学和朋友都参加了,更借这个机会许多很久没见的同学,朋友再次聚在了一起。大家一起聊工作,聊现在的生活,回忆当年的快乐时光,当年的愣头小伙,如今结婚的结婚,生子的生子,唯一没变的是大家的感情,虽然很多时候大家不怎么联系,但在一起的时候还是那么的开心!

     在此祝波波和娟新婚快乐!百年好和!!早生贵子!!!

2004年07月23日

        今天刻盘的时候又看到了五一节去旅行的流水帐,旅途的画面在眼前缓缓闪过,旅行的感觉真好,真是想念那些在旅行中的日子和那些一起旅行的朋友。

成都—凯里—桂林—柳州七日游

费用清单

430  

成都——凯里 K10371530   车费:106+5/人(手续费)

51

下午1330到达凯里 

1路公交车到凯里汽车站                                         车费:0.7/

在凯里车站旁吃的猪排米粉                                   4.00 () 外加脑花 :)

凯里车站——郎德                                                   车费:9/

340到郎德徒步1.2公里到达郎德上寨

5点半左右苗族风情表演

630 郎德——雷山                                                 车费:3/

到达雷山后应塌方无车直达榕江,则改道去西江(雷山——西江)     中巴车费:8/

9点左右到达西江千户苗寨                                           晚饭:6/

晚上住西江苗寨                                     住宿:5/    饮料:3/

消费:185/人(包含成都购买物品费用)52

早上游完西江坐车回凯里                                            车费:17/

凯里转车至从江                                  车费:68/  6个半小时车程)

午饭在凯里吃酸汤鱼                                                 餐费:8/

晚上住从江                                                        住宿:20/

晚饭在从江吃的当地米粉和小吃                                            13/

消费:126/

53

815 从江——高增                                             车费:25/

850分到达高增                                                   门票:4/

因时间仓促未能去成小黄

1020分突降大雨            徒步6.5公里耗时1小时

从江——岜沙                                 车费:15/人(其中三轮摩的2/人)

从江——高安                                                       船费:2/

高安——三江 (路较险)                                           车费:19/

午饭(原本是散伙饭)                                              餐费:12/

晚饭                                                              餐费:16/

住宿(住三江)                                                    住宿:15/

消费:108/

54

三江——龙胜——龙脊——桂林                                      车费:40/

因门票太贵(50/张)和季节原因,未能看到平安梯田···遗憾

住宿(住桂林)                                                    住宿:70/

晚饭在桂林怡园吃的川菜,饭后夜游桂林城。

消费:110/

 

 

55

950桂林——阳朔                                                车费:13/

1110到阳朔西街         因时间问题游西街未能尽兴···遗憾

租自行车游阳朔(还有免费导游,不过一问三不知)                  租车费:15/

游大榕树景点                                        门票:10/  小吃:2/

午餐(月亮山)                                                    餐费:24/

遇龙河竹筏                                                       费用:430/

阳朔——兴坪                                                     车费:5.5/

住宿(兴坪)                                                    住宿费:17/

晚饭(兴坪)酸甜牛肉、欢喜…..                                     餐费:10/

兴坪的大榕树酒吧                                                   费用:4/

消费:130/

56

710分兴坪出发徒步前往阳堤(行程近20公里

早餐(兴坪)米粉                                                   餐费:2.5/元人

过路费:3/

游漓江过渡(三次)                                                渡费:14/

午饭(栗子棕)                                                    餐费: 1/

阳堤——阳朔                                                       车费:8/

阳朔——桂林                                                      车费:10/

桂林——柳州                                                      车费:40/

晚饭(柳州车站旁)                                                 餐费:9/

火车上零食                                                        费用:13/

消费:100/

950柳州——成都 K142                                          车票:191/

消费:191/

 

58

上午617平安到达成都火车北站

 

行程结束

 

 

 

总费用:950/

 

 

 

                       

 

 

昨天试着扩展了一个SWT的Button类,代码如下:

import org.eclipse.swt.events.DisposeEvent;
import org.eclipse.swt.events.DisposeListener;
import org.eclipse.swt.events.MouseEvent;
import org.eclipse.swt.events.MouseTrackListener;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
public class CzButton extends Button implements MouseTrackListener,DisposeListener{

    public CzButton(Composite arg0,int arg1 )
    {
        super(arg0,arg1);
        addDisposeListener(this);
    }
   
    public void mouseHover(MouseEvent e)    {    }
   
    public void mouseExit(MouseEvent e)    {    }
   
    public void mouseEnter(MouseEvent e)    {    }
   
    public void widgetDisposed(DisposeEvent arg0) { }

}

运行程序的时候得到异常:org.eclipse.swt.SWTException: Subclassing not allowed

懵了,怎么有这种异常,以前怎么没遇到过呢?估计还是因为SWT的缘故。在eclipse看到这样一句话:Custom widgets are created by subclassing in the existing widget class hierarchy.于是在代码中加上这一句:package org.eclipse.swt.custom;还是同样的异常。改成package org.eclipse.swt.widgets.custom;也不行。

最后改成package org.eclipse.swt.widgets;才成功了。原来扩展的类要和被扩展的类的类层次一样才行。

呵呵,SWT还真是有点奇怪啊!

2004年07月22日

今天用swt开始写一个程序的界面,发现和以前用swing来写有不少差异。不过在eclipse的网站能找到不少的例子,依瓢花葫芦倒也弄了一个大概的界面出来。不过我一直没找到swt api的文档,有些许的遗憾,如果有api的文档在加上例子相信学习起来会更有收获。在学习的过程中我没有用vep和swt designer这些gui生成工具,下图是今天的成果:

2004年07月21日

Eclipse插件使用links目录的用法:
  假设把插件安装在d:\myplugin目录中,则myplugin的目录结构一定要是这样的:
  d:\myplugin\eclipse\plugins\插件 及 d:\myplugin\eclipse\features\插件
  例如安装EclipseME插件到d:\myplugin目录中,则目录结构为d:\myplugin\eclipse\plugins\eclipseme_0.4.5。
  再假设eclipse安装在d:\eclipse目录中,则在eclipse目录中创建名称为links的目录,在links目录中建立一个link文件,比如myplugin.link,该文件内容为path=d:\myplugin。
  启动eclipse,插件即安装上了,如果想暂时不启动插件,只需把myplugin.link文件删除即可。
补充说明:
 1. 插件可以分别安装在多个自定义的目录中。
 2. 一个自定义目录可以安装多个插件。
 3. link文件的文件名及扩展名可以取任意名称,比如myplugin.txt,goodplugin都可以。
 4. link文件可以有多行path=插件目录,对应多个自定义插件目录,每一行的path参数都将生效。
 5. 在links目录也可以有多个link文件,每个link文件中的path参数都将生效。
 6. 插件目录可以使用相对路径,如果我们把myplugin目录创建在eclipse安装目录中,如上例中的d:\eclipse目录中,则只需设置path=myplugin即可。

 

原文出处:http://www.javaworld.com.tw/jute/post/view?bid=10&id=58389&sty=1&tpg=1&age=0

上个星期朋友去了昆明游玩,花了不到1k,正佩服她会省钱,却说飞机票其他朋友付了,真是羡慕啊!而且还是星期5请了一天假去的。不管怎么说,我还是很难得在双休日到离成都150km以外的地方去玩过。贴几张她发过来的照片看看:

1。这是昆明建水的孔庙,与山东的齐平,建水是个历史悠久的古城,很不错

2。这是昆明的普者黑,很像桂林,坐船游玩,全在上面疯狂水仗

 原文出处:http://www.cs.umanitoba.ca/~eclipse/1-Install.pdf

 1 .在项目的properties下的java build path 下加入swt.jar所在的位置
 win32: INSTALLDIR\eclipse\plugins\org.eclipse.swt.win32_3.0.0\ws\win32\
 gtk: INSTALLDIR/eclipse/plugins/org.eclipse.swt.gtk_3.0.0/ws/gtk/
 motif: INSTALLDIR/eclipse/plugins/org.eclipse.swt.motif_3.0.0/ws/motif/
 photon: INSTALLDIR/eclipse/plugins/org.eclipse.swt.photon_3.0.0/ws/photon/
 macosx: INSTALLDIR/eclipse/plugins/org.eclipse.swt.carbon_3.0.0/ws/carbon/
 
 2.运行项目时要加入swt.jar所需要的SWT run-time DLL
 (否则会报“java.lang.UnsatisfiedLinkError: no swt-win32-2133 in java.library.path”错误)
 DLL文件位置:
  Windows: INSTALLDIR\eclipse\plugins\org.eclipse.swt.win32_3.0.0\os\win32\x86
  Linux GTK: INSTALLDIR/eclipse/plugins/org.eclipse.swt.gtk_3.0.0/os/linux/x86
  Linux Motif: INSTALLDIR/eclipse/plugins/org.eclipse.swt.motif_3.0.0/os/linux/x86
 
 加入的方法:
  1.将DLL文件的路径作为swt程序运行时的java虚拟机变量
   -Djava.library.path=<folder containing the SWT DLL>


  2.在操作系统的环境变量中加入DLL文件的路径。
   Linux/UNIX 下修改 “LD_LIBRARY_PATH”
   Windows下修改“PATH”
 
  3.Windows下将DLL文件拷贝到Windows\System32文件夹中


  4.将DLL文件拷贝到项目文件夹的根目录下

今天在写操作properties文件的类的时候发现properties文件老是被清空。代码如下:

try {
    f = new File(“webcam.properties”);
    fis = new FileInputStream(f);
    fos = new FileOnputStream(f);
    properties = new Properties();
    properties.load(fis);
    properties.save(fos,null);
} catch (IOException ioe)
 {
     ioe.printStackTrace();
 }

后来把代码改为如下就不出现这个问题了:

try {
    f = new File(“webcam.properties”);
    fis = new FileInputStream(f);   
    properties = new Properties();
    properties.load(fis);
    fos = new FileOnputStream(f);
    properties.save(fos,null);
} catch (IOException ioe)
 {
     ioe.printStackTrace();
 }

 

参考http://www.javaresearch.org/article/showarticle.jsp?column=545&thread=4289&start=15&msRange=15

得出如下结论:后将代码中从webcam.properties中获取输出流放置到Properties的load方法之后,发现运行正常。估计原因可能是在load属性之前,构造了新的输出流,并且输出流的文件和输入流文件同名,造成load属性时,此时的输入流的指向已经不是实际的原来的webcam.properties文件,而变成了内存中由输出流产生的空的webcam.properties了。其中的运行机理还是不甚明朗,请对IO熟悉的朋友回贴赐教。