我正在尝试在 JRuby 中重新创建 SwiXML 示例。但是在 JRuby 中创建的对象似乎对 SwiXML 是不可见的。这是一个例子。
<frame size="200,200" title="Action Test">
<menubar>
<menu text="File">
<menuitem action="quit" accelerator="meta X" />
</menu>
</menubar>
<button action="quit" text="A Quit Button"
ToolTipText="This is a quit button." />
</frame>
SwiXML 示例中的 Java 代码如下:
public class ActionTest {
// Create an Action as a member variable
public Action quit = new AbstractAction() {
public void actionPerformed(ActionEvent evt) {
System.exit(0);
}
};
public ActionTest() throws Exception {
// set the Action's name
quit.putValue(Action.NAME, "Quit");
// build the GUI
new SwingEngine(this).render("ActionTest.xml")
.setVisible(true);
}
public static void main(String[] args) throws Exception {
new ActionTest();
}
}
我创建了一些与此相对应的 JRuby 代码,但似乎从未见过 @quit 成员。还尝试引用其他命名元素(不在此示例中):
require 'java'
require 'java/swixml.jar'
require 'java/jdom.jar'
include_class 'javax.swing.AbstractAction'
include_class 'javax.swing.Action'
include_class 'javax.swing.JButton'
class MyAction < AbstractAction
def actionPerformed(ae)
exit # puts "Clicked"
end
end
class Main < Object # Java::JavaLang::Object
def initialize
@quit = MyAction.new
@quit.putValue(Action.NAME, "Quit")
@f = java.io.File.new("sample.xml")
@se = org.swixml.SwingEngine.new(self).render(@f).setVisible(true)
end
end
Main.new