首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

JAVA彩色终端库javacurses的运用 - 感觉并不好

2012-10-29 
JAVA彩色终端库javacurses的使用 -- 感觉并不好import jcurses.system.CharColorimport jcurses.widgets.

JAVA彩色终端库javacurses的使用 -- 感觉并不好

import jcurses.system.CharColor;import jcurses.widgets.*;public class JcursesAppMain {public static void main(String[] args)  throws Exception{//String url = ClassLoader.getSystemClassLoader().getResource("jcurses/system/Toolkit.class").toString();//url=url.trim();System.out.println(url);//    if (url.startsWith("jar:file:")) {//      url = url.substring("jar:file:".length(),url.length());//      System.out.println(url);//      System.out.println(url.length());//      System.out.println("/jcurses.jar!/jcurses/system/Toolkit.class".length());//      url = url.substring(0,url.length()-"/jcurses.jar!/jcurses/system/Toolkit.class".length());//    }//System.out.println(url);//Window w = new Window(40, 20, true, "Hello World Window");        DefaultLayoutManager mgr = new DefaultLayoutManager();        mgr.bindToContainer(w.getRootPanel());        mgr.addWidget(            new Label("Hello World! 你好么?", new CharColor(CharColor.WHITE, CharColor.GREEN)),            0, 0, 40, 20,            WidgetsConstants.ALIGNMENT_CENTER,            WidgetsConstants.ALIGNMENT_CENTER);        w.show();        Thread.currentThread().sleep(15000);        w.close(); // reset the native console}}

?

javacurses 功能库 是一个JAVA彩色终端界面组件库,文件个数不多,且支持Windows和UNIX/LINUX系统.

但是本人在使用过程中发现如下问题:

1. 中文支持不好 <--见图>

2. 第二,在jcurses.system.Toolkit.getLibraryPath()这个方法的实现相当的拙劣! 见如下源码:

private static String getLibraryPath() {    String url = ClassLoader.getSystemClassLoader().getResource("jcurses/system/Toolkit.class").toString();    url=url.trim();    if (url.startsWith("jar:file:")) {      url = url.substring("jar:file:".length(),url.length());      url = url.substring(0,url.length()-"/jcurses.jar!/jcurses/system/Toolkit.class".length());    } else if (url.startsWith("file:")) {      url = url.substring("file:".length(),url.length());      url = url.substring(0,url.length()-"/classes/jcurses/system/Toolkit.class".length());      url = new File(url,"lib").getAbsolutePath();    } else {      throw new RuntimeException("couldn't find jcurses library");    }    String [] fileNames = new File(url).list();    boolean found = false;    for (int i=0; i<fileNames.length; i++) {      String name = fileNames[i];      if (name.trim().startsWith("libjcurses")) {        url = new File(url,name).getAbsolutePath();        found = true;        break;      }                    }    if (!found) {      throw new RuntimeException("couldn't find jcurses library");      }    return url;  }

?

在 String [] fileNames = new File(url).list();处有可能引发 空指针异常,如果你改了jcurses.jar 这个jar文件的名称的话. 我因为改了这个jar的名字为jcurses-win.jar来区分是哪个平台的版本,结果就爆出空指针异常.如果不查源代码,根本找不到问题的出处.

?

原因代码在此:

url = url.substring(0,url.length()-"/jcurses.jar!/jcurses/system/Toolkit.class".length());

?

写死了的东西!

?

?

使用这个库,注意要将libjcurses.dll放到jcurses.jar相同的文件夹下.

?

3. 这个东西在 Eclipse中运行时并不能显示,因为Eclipse捕获了命令行输出显示

这里是放在Jcreator下测试成功的!

?

JAVA彩色终端库javacurses的运用 - 感觉并不好

?

?


?

1 楼 tauruser 2009-05-09   是否有办法在Eclipse对JCurses的程序进行Debug呢?

热点排行