【问题标题】:JRuby Closing an AWT frameJRuby 关闭 AWT 框架
【发布时间】:2012-07-01 03:03:31
【问题描述】:

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

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

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 内联,但我不知道 Ruby 中的语法是什么。

【问题讨论】:

    标签: ruby jruby awt jogl


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2019-07-31
      • 2010-10-16
      • 2011-06-30
      • 1970-01-01
      • 1970-01-01
      • 2010-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多