2

Jython 2.5

メソッドを JText コントロールの focusGained イベントにバインドしようとしていますが、見つかったすべての例は Jython ではなく Java サンプルです。コードは次のとおりです。各テキストコントロールがフォーカスを取得したときにカスタムメソッドを実行したい(たとえば、すべてのコントロールのテキストを選択するため)

from javax.swing import *
from java.awt import *

class Test(JFrame):
    def __init__(self):
        JFrame.__init__(self,
                        'JDesktopPane and JInternalFrame Demo',
                        size=(600, 300),
                        defaultCloseOperation=JFrame.EXIT_ON_CLOSE)

        self.desktop = JDesktopPane()
        self.contentPane.add(JScrollPane(self.desktop)) # This is the same as self.getContentPane().add(...)

        frame = JInternalFrame("Frame", 1, 1, 1, 1, size=(400, 400), visible=1)
        panel = JPanel()

        self.label = JLabel('Hello from Jython')
        panel.add(self.label)

        self.textfield1 = JTextField('Type something here',15)
        # self.textfield1.addFocusListener(event.FocusListener())  # ???

        panel.add(self.textfield1)

        self.textfield2 = JTextField('and click Copy', 15)
        panel.add(self.textfield2)

        copyButton = JButton('Copy',actionPerformed=self.noAction)
        panel.add(copyButton)

        frame.add(panel)
        frame.pack()
        self.desktop.add(frame)

        frame.setSelected(1)
        frame.moveToFront()

    def noAction (self, event):
        pass

if __name__ == '__main__':
    test = Test()
    test.setLocation(100, 100)
    test.show()
4

2 に答える 2

1

クールンシンプル。ありがとうございました!イディオムは

{var} = {constructor}({param}, {event}={function})
tf = JTextField('1.23', focusLost=tf_focus_lost)

他の選択肢:

from java.awt.event import FocusListener
class Enfoque(FocusListener):
    '''Add dynamically'''
# Left unimplemented
#    def focusGained(self, event):
#        print 'tf_b Enfoque.focusGained'

    def focusLost(self,event):     
        print 'tf_b Enfoque.focusLost'

enf = Enfoque()

tf_b = JTextField('2.34')
tf_b.addFocusListener(enf)
于 2011-07-13T17:33:09.693 に答える
1

私は昨日自分でこれを理解しようとしていました...テストして動作します:

from javax.swing import *
from java.awt import *

class Test(JFrame):
    def __init__(self):
        JFrame.__init__(self,
                        'JDesktopPane and JInternalFrame Demo',
                        size=(600, 300),
                        defaultCloseOperation=JFrame.EXIT_ON_CLOSE)

        self.desktop = JDesktopPane()
        self.contentPane.add(JScrollPane(self.desktop)) # This is the same as self.getContentPane().add(...)

        frame = JInternalFrame("Frame", 1, 1, 1, 1, size=(400, 400), visible=1)
        panel = JPanel()

        self.label = JLabel('Hello from Jython')
        panel.add(self.label)

        self.textfield1 = JTextField('Type something here',15,focusGained=self.myOnFocus)


        panel.add(self.textfield1)

        self.textfield2 = JTextField('and click Copy', 15)
        panel.add(self.textfield2)

        copyButton = JButton('Copy',actionPerformed=self.noAction)
        panel.add(copyButton)

        frame.add(panel)
        frame.pack()
        self.desktop.add(frame)

        frame.setSelected(1)
        frame.moveToFront()

    def myOnFocus(self,event):
        print "testing..."

    def noAction (self, event):
        pass

if __name__ == '__main__':
    test = Test()
    test.setLocation(100, 100)
    test.show()
于 2009-07-31T15:50:57.543 に答える