Java.use(better, Jython=Swing);

前の記事記事一覧次の記事
Java.use(better, Jython=Swing);


例題で学ぶ Jython/Swing フレームワーク Episode#02: リファクタリング

#02.04: リスナー


《関連記事》

■ 事例:モジュールを起動する
$ jython2.5.0 -i swing_tips.py 
>>> ex()
 0: step00 -- from javax.swing import JFrame
 1: step01 -- from javax.swing import JButton
 2: step02 -- class TIPS()
 3: step03 -- from javax.swing import JPanel
 4: step04 -- def command(self, *args)
 5: step05 -- from random import randint
 6: step06 -- from javax.swing import JList
 7: step07 -- from javax.swing import DefaultListModel
 8: step08 -- from javax.swing import JScrollPane
 9: step09 -- class Command(object)
10: step10 -- def addElement(self, obj)
11: step11 -- from java.awt import GridLayout
12: step12 -- from javax.swing import JLabel
>>> do(4)

次のようなウィンドウが現れます。

  • ボタンを押すと、発生したイベントに関する情報が出力されます。
>>> do(4)
len(args): 1
args: java.awt.event.ActionEvent[ACTION_PERFORMED,cmd=random,when=1255865647906,modifiers=Button1] on javax.swing.JButton[,46,5,88x29,alignmentX=0.0,alignmentY=0.5,border=apple.laf.CUIAquaButtonBorder$Dynamic@fecda0,flags=288,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=4,left=20,bottom=5,right=20],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=false,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=random,defaultCapable=true]
  • イベントハンドラー command の実引数の数は、1 です。
  • 発生したイベントは、ActionEvent です。
  • ボタンには、テキスト text=random が設定されます。

■ 事例:コードの解説

def step04():
    class TIPS():
        def __init__(self, master):
            panel = JPanel()
            master.add(panel)
            comp = JButton(
                text = "random",                    #1:
                actionPerformed = self.command,     #2:
                )
            panel.add(comp)

        def command(self, *args):                   #3:
            print("-"*20)
            print("len(args): %d"%len(args))
            print("args: %s"%args)
        
    ## ----------------------------------------
    frame = JFrame(
        title = "swing: step04",
        size = (180,100),
        )
    TIPS(master=frame)    
    frame.visible = True

》こちらに移動中です《

■ #2: コンポーネントを配置する
                actionPerformed = self.command,     #2:

フレーム frame 内に、指定したコンポーネント comp を配置 add します。つまり、ウィンドウをコンテナーと見なして、その中にボタンを追加します。

 ↑ TOP

》作業中です《

update♪2009/10/18