Tcl 的 Java 图形用户界面

标签 java user-interface tcl tk-toolkit jacl

我在用 Java 编写可以与 Tcl 脚本交互的 GUI 时遇到了一些麻烦。当 Tcl 脚本运行时,我希望将信息传递到此 GUI 并显示。在 GUI 上进一步输入的信息应该能够返回到脚本。

我目前正在使用 Tcl/Java。不幸的是,我使用的是Teamcenter,根据用户手册,不支持Tk工具包。所以我尝试再次使用 Swing。

这就是我试图为 Swing 工作的内容,但是当我运行脚本时没有任何显示:

package require java

java::import javax.swing.JFrame 
set window [java::new javax.swing.JFrame] 
$window setSize 100 100
$window setVisible true

我还发现了 Swank ,但似乎很少有相关文档,所以我不知道如何继续。

关于如何最好地解决这个问题有什么建议吗?或者在哪里可以找到额外的资源?

最佳答案

我不熟悉你提到的Java库,但从

来看

When a Tcl script is run, I want information passed to this GUI and displayed. Further inputted information on the GUI should be able to be returned back to the script.

声明您的案例非常适合IPC 。我的意思是,我只需启动一个 Tcl 程序,通过某种 IPC 连接正在运行的 Java 和 Tcl 程序,然后使用商定的协议(protocol)在它们之间进行交换。

最简单的跨平台 IPC 可能会使用 TCP 套接字:比如说,您的 Java 应用程序在监听某个环回接口(interface)地址的随机端口上打开一个套接字,然后将该套接字的地址传递给它生成的 Tcl 应用程序; Tcl 应用程序然后 connects到该套接字,两个应用程序都会交换命令和响应。

另一种可能性是使用托管它的 Tcl shell 的标准 IO channel (stdin 和 stdout)与脚本进行通信:您的 Java 主机将其命令写入生成的 Tcl 应用程序的 stdin 并从其 stdout 读回其输出。这种方式可能比 TCP 套接字更简单,但需要在 Windows 上进行特殊处理(您必须使用 tclsh 运行脚本,而不是 wish,因为在后一种情况下,它将有其标准 channel 无处连接)。

如果您不需要跨平台 IPC 并且可以使用外部 Tcl 库,那么您可以通过特定于平台的东西进行通信,例如 Unix-domain sockets , D-Bus , Windows named pipes (Unix 命名管道无需额外软件包即可使用),DDE等等

关于Tcl 的 Java 图形用户界面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11421351/

相关文章:

ios - 在 iOS 应用程序中为动态下载的图像添加样式

linux - 右大括号后的额外字符

tcl - 设置 TCL 以访问 tcl 库

添加按钮时 TCL/TK 错误窗口或路径名

java - 是否可以修改 OSCeleton 发送lost_user 事件/消息的时间?

java - 这种在Spring Boot应用程序中启动无限循环的方式有什么问题吗?

c# - 抽象 UI 数据格式

windows - Mac 和 Windows 之间的 Matlab GUI 兼容性(显示)

java - 日期格式给出无法解析的日期错误?

java - 是否有在像 Liferay 这样的 JSR 286 portlet 容器中使用并发后台进程的规定?