在Java代码中打开TCL gui

时间:2013-04-17 21:35:41

标签: java tcl jacl bwidget

我有一个TCL文件,它使用Tcl的BWidget包,我一直用它作为我的程序的GUI。我现在希望能够从单独的Java程序加载此GUI。我看过Jacl和Swank,但他们似乎并没有完全按照我的意愿行事。

我已经尝试了以下Jacl,但无法评估该文件。在调试时,我可以看到它完成了对我的tcl文件的解析,但它在解析BWidget包tcl文件时抛出异常。这是我的Java代码:

Interp interp = new Interp();
try {
    interp.evalFile("C:\\CTP\\Tcl\\LuxonCtp32.tcl");
} catch (TclException ex) {
    int code = ex.getCompletionCode();
    System.err.println("command returned bad error code: " + code);
} finally {
    interp.dispose();
}

关于如何实现我想做的事情的任何想法?它甚至可能吗?

2 个答案:

答案 0 :(得分:0)

Tcl本身无法显示GUI。它使用了一个名为Tk的插件。
在Tcl的C参考实现中,你也得到了Tk Tcl还没有移植到Java。

你不能使用Jacl来显示Tk小部件,但TclBlend可以这样做,因为TclBlend使用Tcl的C参考实现。这意味着用户需要安装Tcl / Tk。

TclBlend和Tcl存在一些问题> 8.5到,导致段错误 IIRC您必须删除TclBlends C代码中if周围的条件Tcl_FindNameOfExecutable(并自行编译)。

答案 1 :(得分:0)

转到此网站http://jtcl-project.github.io/jtcl/并立即下载以获取二进制邮箱。它是github上最近的一个名为Jtcl的java tcl。 解压缩它,你会发现一个名为jtcl-2.7.0.jar的jar。 我正在使用Netbeans 8。 我将jar添加到项目库中。 我创建了一个名为JTclHallo.java的java文件,这是代码。

package jtclhallo;
// import tcl.lang it belongs to jtcl-2.7.0 jar a must

import tcl.lang.*;

 // Java wrapper to test JACL or JTCL.

public class JTclHallo {
    public static void main(String []args) {

        //Interp is a java class belonging to tcl.lang. Unrar the jtcl-2.7.0

        Interp i = new Interp();


        try {

            //call your tcl file mine was swing.tcl from the E drive
            i.eval("source E:/private/swing.tcl");
            } catch (TclException e) {
            System.out.println("Exception: " + e.getMessage());
            }

    }
 }

对于swing.tcl

package require java

set window [java::new javax.swing.JFrame]
$window setSize 600 400
$window setVisible true