`

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

 

 

 


 

  • 大小: 38.1 KB
2
0
分享到:
评论
1 楼 tauruser 2009-05-09  
是否有办法在Eclipse对JCurses的程序进行Debug呢?

相关推荐

    javacv-platform-1.3-bin.zip

    JavaCV(Java Computer Vision)是一个开源的计算机视觉库,它为Java和Android提供了对各种流行的计算机视觉库的访问,如OpenCV、FFmpeg、Face_recognition等。在本例中,我们关注的是`javacv-platform-1.3-bin.zip`...

    javacv-platform-1.3.3-bin.zip

    javacv官方最新全量jar包,javacv-platform-1.3.3-bin.zip,由于github国内下载较慢,此文件只作为分流,由于现在csdn没办法设置免费资源了,只能设置最低的2分,望大家见谅!

    Java(通过ganymed-ssh2-build210.jar)实现SSH远程连接linux终端

    Java通过ganymed-ssh2-build210.jar库实现SSH远程连接Linux终端是一个常见的应用场景,主要用于自动化运维、系统管理或者开发过程中需要与Linux服务器交互的场景。ganymed-ssh2-build210.jar是Java的一个开源SSH库,...

    java基础教程----精华版

    Java是一种广泛使用的面向对象的编程语言,以其平台独立性、安全性、健壮性和高性能而闻名。这个"java基础教程----精华版"显然是一份精心整理的资料,旨在帮助初学者快速掌握Java编程的基础知识。下面将详细介绍Java...

    mysql-connector-java-commercial-5.1.30-bin.jar

    将要使用的是mysql-connector-java-5.1.30-bin-g.jar和mysql-connector-java-5.1.30-bin.jar 配置 在C:\Program Files\Java目录下建立mysqlforjdbc子目录,进入该目录将mysql-connector-java-5.1.30-bin.jar到该...

    java中让控制台输出彩色字符的方法

    总结起来,"jansi"库为Java开发者提供了一种简单有效的方式来实现控制台的彩色输出,通过引入"jansi-1.11.jar"并调用其API,可以在任何支持ANSI转义码的终端上展示丰富的颜色信息,提升代码可读性和用户体验。

    java keytool gui 图形工具 portecle-1.7.zip

    Portecle 是一个图形化界面的 JDK 中的命令行工具 keytool ,可生成各种不同类型的密钥库,生成并存储相关的 X.509 证书、生成 CSRs、导入和储存信任的证书并进行维护。 http://www.oschina.net/p/portecle

    mysql-connector-java-5.1.30

    MySQL是世界上最受欢迎的关系型数据库管理系统之一,而`mysql-connector-java-5.1.30`是MySQL官方为Java开发者提供的数据库连接驱动包。这个驱动包使得Java应用程序能够与MySQL数据库进行无缝通信,执行SQL查询,...

    selenium-java-2.44.0、selenium-java-2.44.0-srcs、selenium-server-standalone-2.44.0

    在实际使用中,开发人员通常会将`selenium-java-2.44.0.jar` 添加到他们的项目类路径中,以便调用WebDriver API进行测试。同时,如果需要进行分布式测试,他们会启动`selenium-server-standalone-2.44.0.jar`,并在...

    cors-filter-1.7.jar 和 java-property-utils-1.9.jar

    `java-property-utils-1.9.jar` 可能用于读取自定义的配置文件,例如,你可能希望根据不同的环境设置不同的CORS策略,这时可以将策略写入一个属性文件,然后使用`java-property-utils`来读取并设置过滤器的参数。...

    mysql-connector-java-5.1.37jar包和源码

    在本案例中,"mysql-connector-java-5.1.37.jar" 是一个特定版本的MySQL JDBC驱动程序,发布于2016年,属于较旧但仍然广泛使用的版本。这个jar包是Java开发者用来连接到MySQL服务器的关键组件。 首先,我们需要了解...

    mysql-connector-java-5.1.40-bin.jar连接器

    在使用mysql-connector-java-5.1.40-bin.jar时,通常需要将其添加到项目的类路径(classpath)中,这样Java虚拟机在运行时才能找到并加载这个驱动。在IDE如Eclipse或IntelliJ IDEA中,可以直接将jar文件添加到项目的...

    Java运用ganymed-ssh2-build210.jar包远程连接操作linux服务器

    本文档的标题是"Java 运用 Ganymed-SSH2 库远程连接操作 Linux 服务器",这意味着我们将使用 Java 语言来远程连接 Linux 服务器,并使用 Ganymed-SSH2 库来实现远程连接和文件传输。 描述解释 描述部分提到使用 ...

    mysql-connector-java-5.1.7-bin.jar

    使用"mysql-connector-java-5.1.7-bin.jar"时,需要将其添加到Java项目的类路径中。这可以通过多种方式实现,例如在IDE(如Eclipse或IntelliJ IDEA)中设置库依赖,或者在命令行运行Java程序时使用`-cp`或`-...

    java jdk-8u65-windows-i586.exe

    java jdk 8u65 for windows x32 截至2015.11.03 最新版JDK For windows x32 sha256: c57d582f18327870dab75bba6b28b6cc367897784af6439252db09945a2c921e md5: 3e49f4f5645449a40da06336dbc10cff 大小:181.24 MB

    JavaReport-V3-Enterprise-Released.part1

    国产的报表工具,操作比较方便,效果也不错。但是还是有点bug的存在

    java解压rar 包含java-unrar-0.3.jar

    需要注意的是,使用`java-unrar`库时,确保已经正确地将`java-unrar-0.3.jar`添加到项目的类路径中。此外,由于版权原因,这个库仅支持读取RAR文件,而不支持创建新的RAR文件或修改已有RAR文件。 在实际开发中,你...

    很棒的毕业设计、课程设计、练手的java项目-仓库商品管理系统(文档+视频+源码).rar

    很棒的毕业设计、课程设计、练手的java项目---仓库商品管理系统(文档+视频+源码) 很棒的毕业设计、课程设计、练手的java项目---仓库商品管理系统(文档+视频+源码) 很棒的毕业设计、课程设计、练手的java项目---仓库...

    java-property-utils-1.9.jar

    配置tomcat,支持js跨域访问用的的jar包 与 cors-filter-1.8.jar 一起用

    mysql-connector-java-5.1.47 jar包

    当Java应用通过JDBC与MySQL交互时,首先会加载`mysql-connector-java-5.1.47.jar`库。然后,应用程序通过调用`Class.forName()`方法加载MySQL的JDBC驱动。接着,`DriverManager.getConnection()`方法被用来创建...

Global site tag (gtag.js) - Google Analytics