0

我决定检查 JRuby 和 JOGL,看看我是否可以运行一些图形模拟程序。我已经设置了类路径,并且正确包含了 OpenGL 的东西。按照一些教程,他们建议使用 AWT 框架而不是 Swing 框架,因为 Swing 不支持图形加速(这确实是我正在寻找的)。

但是,我不知道如何从 Ruby 中关闭AWT 框架。Kernel.exit我有一个 WindowAdapter,当单击框架上的关闭按钮时会触发一个事件。它看起来像这样:

class Controller < WindowAdapter
  def windowClosing(event)
    Kernel.exit
  end
end

Frame 用add_window_listener(Controller.new). 当我单击关闭按钮时,该事件成功触发,但它吐出以下错误:

Exception in thread "AWT-EventQueue-0" org.jruby.exceptions.RaiseException: (SystemExit) exit

从 Frame 的初始化中调用 Kernel.exit 成功退出程序。所以我不确定为什么从监听器调用它会失败。我知道在java中你可以定义一个匿名的WindowAdapter inline,但我不知道Ruby中的语法是什么。

4

1 回答 1

0

我做了一些额外的搜索和实验,找到了答案。这似乎是 JVM 中 Ruby 实现的一个怪癖。从 WindowAdapter 内部调用exitor是没有用的。Kernel.exit

java.lang.System.exit(0)但是,调用确实有效。我不确定为什么这种区别应该有所作为。我希望exit为 Java 系统命令起别名,但它显然不希望这对可能遇到相同问题的其他人有所帮助。

于 2012-07-02T12:18:06.287 回答