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