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下测试成功的!