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

34 篇文章 0 订阅
21 篇文章 0 订阅
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下测试成功的!

 

 

 


 

  • 大小: 38.1 KB
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值