我有一个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();
}

关于如何完成自己想做的任何想法? 可能吗?

===============>>#1 票数:0

Tcl本身无法显示GUI。 为此,它使用了一个名为Tk的插件。
在Tcl的C参考实现中,您也会获得Tk。
Tk尚未移植到Java。

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

TclBlend和Tcl> 8.5 through存在一些问题,这会导致段错误。
IIRC你必须删除条件if周围Tcl_FindNameOfExecutable在TclBlends C代码(和自己编译)。

===============>>#2 票数:0

转到此站点http://jtcl-project.github.io/jtcl/并立即下载二进制zip。 它是github上最近的Java tcl,称为Jtcl。 解压缩它,您将找到一个名为jtcl-2.7.0.jar的jar。 我更喜欢使用Netbeans 8。 我将罐子添加到项目库中。 我创建了一个名为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

  ask by Say.My.Name. translate from so

未解决问题?本站智能推荐: