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

    xiaoxiao2022-06-29  48

    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 查看图片附件
    转载请注明原文地址: https://ju.6miu.com/read-1125519.html

    最新回复(0)