« 快快乐乐大头贴 | 泄漏出的WindowsMobile2005 »

控制台GUI

bruce | 三月 24,2005 20:29

不少过来人都怀念TuborC BC3.1上经典的控制台界面。在没有graphic windows环境之前,控制台窗口环境,通过模拟文本字符的组合。

和命令行比起来,可谓方便很多。属于过渡阶段产物。

Borland在界面框架上面做了不少文章。现在还回想起当年使用BC3.1写出的第一个软件产品的过程。

如今的年青人上来就是windows,即使搞linux也都自动起x-window。殊不知,很多服务程序是完全没有必要图形界面的。控制台足矣。

尤其是以丰富指令程序文明的unix和类unix系统,x-free基本就没什么进展。控制台搞定一切。


unix下也有不少带控制台文本窗口的工具,对不熟悉命令行,又不愿意man --help的人来说,再偷懒不过了。各种向导、各种参数设置。以及vi等优秀编辑工具都是很好的应用。

包括现在很多的银行应用,都用到了文本窗口控制台。虽然没有windows灵活,但他也有着自己的特点。

校园telnet的bbs系统,就是一种典型的应用。

古老的dos下的pc,nc,ndd,hd-copy,ucdos,cced什么的仍然记忆犹新。

--==--

总之,为什么又拣起这个看似古老的话题呢?

最近教育网故障又导致完全无法忍受几k的下载速率,远程的win服务vnc都是不可能的,这种恶劣的环境,只有控制台才能生存。

但ftp,lftp指令实在是繁琐,用惯了windows工具就根本不愿意敲键盘记命令行。

早上起床突然琢磨着要是有个跟flashfxp功能类似,操作简便的带有BC3.1一样界面的程序,至少可以通过上下键选择文件也好。

自然,用c、c++去做似乎效率低了点,何况是unix下的开发,有些晕。

当时想到了java。

但java那黑白分明的system.out似乎没看到彩色过。

晚上回来翻了一下jdk,默认是不支持的。

google一把,果然有人有过同样的心思,虽然不多,但是还是在javaword知识库中找到了2002年的老文章。
http://www.javaworld.com/javaworld/javaqa/2002-12/02-qa-1220-console.html
http://www.javaworld.com/channel_content/jw-ui-index.shtml

看了解释和方法介绍,看来虚拟机本身是不支持ANSI彩色输出的。

2种开源库专门做这个,一个是 Java Curses Library (JCurses)  http://sourceforge.net/projects/javacurses/
利用JNI调用本地ANSI在指定位置输出彩色文字,并提供了一套很详细的OO的窗体框架。

另外一种是 Enigma Console http://easynews.dl.sourceforge.net/sourceforge/enigma-shell/enigma-beta-0.2.zip
是利用了swing开了一个自写窗口,再把System.out 之类的输出流绘画到窗口中。

显然,各有优缺点。
第一种,就是我们最需要的,用文本模拟窗口环境,那套现成的特种窗口框架更是好。
第二种更适合于做带色彩的输出debug信息。

在win/linux下都跑了一下JCurses的测试
真还不错。就是中文支持差,还有以前中文dos碰到的老问题:滚动条、阴影等2字节在一起就和中文编码冲突显示乱码。
在他的基础上改一改,确实可以做不少事情。

用java的oo更方便与理解整个窗口架构,开发效率也高,编码调试都很方便。又可以垮平台,拿来写写控制台程序界面应该很好吧。

分析改造一下,也许以后会用到,对理解gui元素也有好处呀。

java是慢一点,但大多是视觉上,现在有了SWT,或者就用这个控制台窗体库,再或者字节用web控制,拿那点内存换取快速开发,还是值得的。

jcurses.gif, 20 KB

classdg.gif, 71 KB

Unix/Linux下的开源c库:
CDK(Curses Development Kit http://www.vexus.ca/products/CDK/)是一套基于curses的免费窗体开发库。
http://www.chinaunix.net/bbsjh/4/9745.html

请教!!cdk的使用! [回复]

我是一个在校的大学生,不是计算机专业的由于需要学习cdk的使用,却苦于找不到合适的资料,特此请教你,给点建议,在那里可以找到比较合适的资料?谢谢!

heqi | 2005-04-11, 20:15

fsaf [回复]

asfsaf

fsda | 2005-05-13, 11:20

我顶 [回复]

uuuuu

大牛 | 2005-08-01, 18:42