У меня нет вашего ответа здесь (мой Ruby недостаточно хорош) - но у меня возникла похожая проблема при попытке использовать Jython здесь;этот пример частично работает (он подхватывает действие 'quit').
from org.swixml.jsr296 import SwingApplication
from org.jdesktop.application import Application
from javax.swing import JButton, JFrame
class MyFrame(JFrame):
def __init__(self):
pass
class Tester(SwingApplication):
def __init__(self):
self.frame=MyFrame()
#self.frame=JFrame()
def startup(self):
print "Application Started"
self.render(self.frame,"frame.xml").show()
def shutdown(self):
print "Application Shutdown"
#def quit(self,evt):
# print "Over-ridden quit"
def action1(self,evt):
print "action1"
if __name__=='__main__':
Application.launch(Tester,None)
Я добавил вторую кнопку в XML следующим образом:
<button action="action1" text="action1" ToolTipText="action1" />
Но дополнительное 'action1'swixml никогда не видит метод, кажется, я получаю следующий вывод при запуске (и затем выходе) приложения:
Application Started
SwixML 2.5
11-Nov-2011 12:10:38 org.swixml.XAction <init>
WARNING: error on Action initialization [org.python.proxies.__main__$MyFrame$1.action1()]
Application Shutdown
Интересно то, что если вы раскомментируете' def quit (self,evt) метод;этот метод замечен SXIWML;и поведение кнопки «выйти» меняется с выключения приложения на печать сообщения.
Так что кажется, что что-то в том, как SWIXML отражает поиск действий, не выполняется, когда действие чисто определено в Jython(Подпись метода?): Но переопределение существующего метода действия работает.
Было бы очень приятно увидеть, что здесь происходит - я мог бы записать новый вопрос StackOverFlow в этом примере и сослаться на этот.
Было бы замечательно иметь возможность быстро собрать простые приложения SWING, используя JRuby / Jython (и т. Д.), Используя SWIXMl;но я думаю, что нужен рабочий шаблон того, как это сделать.
Другая странная вещь, которую я не могу объяснить;если строка «self.frame = MyFrame ()» изменяется для создания экземпляра стандартного JFrame: «self.frame.JFrame ()» - это приводит к ошибкам загрузчика классов:
SwixML 2.5
11-Nov-2011 12:19:14 org.swixml.XAction <init>
WARNING: error on Action initialization [null ClassLoader]
11-Nov-2011 12:19:14 org.swixml.XAction <init>
WARNING: error on Action initialization [null ClassLoader]
11-Nov-2011 12:19:14 org.swixml.XAction <init>
WARNING: error on Action initialization [null ClassLoader]