将最后的一项功能即由设计界面生成代码加上了。采用的特殊注释加编码规范的方法解析和生成代码,不依赖外部描述文件。你可以修改java代码,只要不打破一些代码规则,就能解析成设计界面。关于实现细节我以后还会撰文描述。总的来说是一个介于netbeans matisse和eclipse ve策略之间的方法,生成的代码风格上很像Visual Age for Java的界面设计工具生成的代码。 

        这个项目一开始,我就发现要消耗太多的时间和精力,毕竟界面设计工具不是一个小项目。再加上进一阶段个人事情太多,以至于没有以前写文章的生产率了。

         其实这个阶段中,我还做了一个项目,没跟大家讲过。这是个名称为BaloonTip的项目,是我帮朋友公司做的一个项目。这是个能定制非规则轮廓的提示窗口,内容可以为任何组件,用户可以定制阴影的透明度,投影方向以及投影颜色合成等。下面是这个BaloonTip的几个截图:

 

swing_designer的最新代码下载

评论:

酷!~

后面的BaloonTip项目也非常不错
能否共享代码啊?
^_^

发表于 小虫 在 2007年09月18日, 07:08 下午 CST #

是啊 BaloonTip,这个很感兴趣呢 能否共享下代码呢 期待中 ...

发表于 220.175.15.201 在 2007年09月18日, 07:19 下午 CST #

期待中 ...

发表于 220.175.15.201 在 2007年09月18日, 07:27 下午 CST #

这个项目是给朋友公司做的,版权已经转让给他们公司了,不能公开代码了。但我可以写文章介绍实现原理。

发表于 williamchen 在 2007年09月18日, 07:38 下午 CST #

呵呵 我们感兴趣的不是那个项目 而是里面关于类似Tooltip的那个功能的实现 ,可否单独将它的功能实现单独分离出来呢 ?让我们欣赏下它的功能是如何具体实现的,欣赏下它的源代码,渴望的期待中啊....

发表于 220.175.15.201 在 2007年09月18日, 08:48 下午 CST #

swing组件成不规则矩形,是非常容易办到的。原理很简单,首先重写paintComponent,把super.paintComponent(g)这一行删除就可以了,因为这样可以做到swing组件去除背景,透明效果就出来了,然后可以进行任意的绘制,不规则矩形、半透明可以非常容易实现。
我也是Java桌面爱好者,我的地址http://blog.s ina.com.cn/javagui。由于s i n a不被采用所以只好加空格了:(

发表于 电玩 在 2007年09月19日, 09:33 上午 CST #

swing组件成不规则矩形,是非常容易办到的。原理很简单,首先重写paintComponent,把super.paintComponent(g)这一行删除就可以了,因为这样可以做到swing组件去除背景,透明效果就出来了,然后可以进行任意的绘制,不规则矩形、半透明可以非常容易实现。
我也是Java桌面爱好者,我的地址http://blog.s ina.com.cn/javagui。由于s i n a不被采用所以只好加空格了:(

发表于 电玩 在 2007年09月19日, 09:34 上午 CST #

电玩:
是吗?我没有过滤sina啊。

发表于 williamchen 在 2007年09月19日, 10:18 上午 CST #

上面的那个网友,
就像电玩说的,不是很难实现。我以前有文章介绍如何实现,不过那儿的比较简单,这儿比较复杂罢了。基本原理是相似的。这儿没有使用Robot截屏,而是使用了paint
渲染方法来取背景图。可能真正要解决的问题是图像处理方面的问题,比如阴影的生成啊,需要理解一些java2d知识,以及基本图形学的知识,比如投影的数学模型啊。但这些
都是边边角角了。
我以前的博客在 h ttp://blog.sina.com.c n/swingjava
你可以在那儿查找。
以后有时间一定写篇文章专门介绍如何实现。但代码可能要重写,或者使用描述性伪代码。
看来是系统自动分析出链接地址进行屏蔽。

发表于 williamchen 在 2007年09月19日, 10:58 上午 CST #

我在Linux下,用Netbeans5.5.1英文版,JDK1.5,请帮我看看字体设置的问题
我安装的是英文版,英文字体非常不好看,字体粗糙...
这上面有截图...

发表于 william 在 2007年09月19日, 09:39 下午 CST #

楼主,看了你的swing_designer的源代码,很多地方看不懂啊,楼主可否再仔细一点介绍一下啊。

发表于 herui 在 2007年09月20日, 05:59 下午 CST #

com.sun.tool.javac.Main
这个类找不到,到哪儿找JRE啊

发表于 william 在 2007年09月21日, 01:48 下午 CST #

com.sun.tool.javac.Main就是JDK_HOME\lib\tools.jar中的,把它放在库中即可。

发表于 williamchen 在 2007年09月21日, 02:07 下午 CST #

我要出去几天。回来再写文章介绍。

发表于 williamchen 在 2007年09月21日, 02:08 下午 CST #

真遗憾 你外出了 呵呵
其实那个tooltip的真的要好好考虑下
比如 一个提示框上面能否有超连接呢?一个提示框的上面的信息能否再有提示框呢?一个提示框可以含有其他的组件么?...

希望能指导一下 呵呵

发表于 220.175.15.201 在 2007年09月21日, 09:45 下午 CST #

牛,专业!
我一直用Java,Java把OO艺术性发挥到极致了,而且具有其他一些语言所不具有的跨平台性。
原则上说只要在窗体内,用Java可以实现任何控件。
不过我最近又拾起MFC框架了,不是因为不喜欢Java,而是编写的应用程序太没有用户友好性——发布时太大了,我曾经用过JSmooth, InstallAnyWhere, NativeJ,ExeJ等工具,包上JRE起码的30多兆,我晕啊!而且太耗内存,启动一个Java程序起码的18兆左右的内存吧。
现在冒出个SWT,纯粹是个不伦不类的骡子,要实现一些本地功能(比如不规则窗体、透明窗体),直接用JNI就实现了,还非得学习一个不被Java标准所接受的框架?!

对MFC存在种种误解——“封装不好,太复杂”,其实产生这些误解的原因有
(1)要用C++语言写出纯正的OO程序不是一件容易的事情,因为C++比Java复杂,且它保留了C的成分,C++程序不要求所有代码都必须写在类里面。如果编程风格不严谨,就会写出非OO的代码。
(2)MFC定义了大量的宏,这些宏对初学造成很大障碍。
(3)编程严重依赖于操作系统,而Windows本身很复杂。

其实只要稍微深入了解一下MFC,就会发现C++的OO特性在MFC里面也是用的出身入化——每一个控件都是一个类,子类函数动态绑定等等。

何况一个C++写的MFC程序一般只耗3兆多内存,而且大家用的OS基本上都是Windows, 因此在Windows上我拾起了MFC。至于Java用了5年多,不会彻底不用。

发表于 aa 在 2007年09月21日, 10:00 下午 CST #

有些人就想白拿啊

发表于 fkpwolf 在 2007年09月23日, 01:15 下午 CST #

应用场景呢?能整合metadata?有databinding方案么?能发展成rcp方案么?
我感觉你还是在做着玩,还是多花点心思在dyno上吧

发表于 tealc 在 2007年09月25日, 12:50 下午 CST #

请问楼主 我要为JTree着色一个图片背景 怎么做 按一般的方法重载paintComponent不行

发表于 haoke 在 2007年09月27日, 09:08 上午 CST #

请问楼主,您的blog帐号在哪里注册的,我现在怎么在blogs.sun.com上注册不了,每次点击注册的按钮都打不开相关的页面,谢谢!

发表于 www 在 2007年09月28日, 09:08 上午 CST #

楼主什么时候回来了
今天看了一下Roumen's Weblog
Consumer JRE 快要出来了
这是否意味着Java桌面时代的来临呢?
楼主写点文章谈谈!

发表于 小虫 在 2007年10月03日, 12:41 下午 CST #

楼主:swing_designer这个项目实际的应用是怎样的呢?我不是太明白这个项目用来作什么?

发表于 网鱼 在 2007年10月12日, 03:48 下午 CST #

小虫:
我十一前出去玩了,十一又休了三天假,现在刚回来。
网鱼:
我本来是把它作为博客教程的demo的,一做做过了头,就是用来学习用的。

发表于 williamchen 在 2007年10月12日, 04:57 下午 CST #

发表一条评论:
  • HTML语法: 禁用

This blog copyright 2009 by williamchen