Java/Python 導入ガイド:Invoking the Jython Interpreter

Java プログラマーのための Python 導入ガイド記事一覧
Invoking the Jython Interpreter

《著》小粒ちゃん《監修》小泉ひよ子とタマゴ倶楽部
第1版♪2003/05/23 ● 第2版♪2009/04/03

■ 概要

Jython の特徴は、Java アプリケーションを実行中に、そのプログラムを更新できることです。

 アプリケーションを起動した後で「この状態を変えたい」と気付いても後の祭りです。
 Jython なら、Java アプリケーションを実行したままで、後から状態を変更できます。
 今回は、アプリケーション実行中(一時停止せず)に、ウィンドウ等の属性を更新します。

対話モード

Jython の特徴は、アプリケーションを実行中に、そのプログラムを更新できることです。つまり、アプリケーションを終了しないで、コードを変更できるのです。それを確認するために、前述したコードを次のように変更します。

from javax.swing import JFrame
from javax.swing import JLabel

def createAndShowGUI():
    global frame         # (@.@)
    frame = JFrame("HelloWorldSwing",
        defaultCloseOperation=JFrame.EXIT_ON_CLOSE,
        )
    label = JLabel("Hello World")
    frame.contentPane.add(label)
    frame.pack()
    frame.visible = True
    
frame = None

if __name__ == '__main__':
    createAndShowGUI()

大域変数 frame (@.@) を利用して、作成したウィンドウを参照できるようにします。

$ jython -i HelloWorldSwing.py

オプション -i を指定すると、対話モードでモジュールの動作を確認できます。

>>> dir()
['JFrame', 'JLabel', '__doc__', '__file__', '__name__', 'createAndShowGUI', 'frame']

組み込み関数 dir を利用すると、参照できる名前の一覧が得られます。この中には、クラス JFrame/JLabel やメソッド createAndShowGUI の他に、大域変数 frame があります。そこで、この frame を介して、実行中のアプリケーションの状態(属性)を更新します。

更新:ウィンドウ

まず、アプリケーションを実行中に、ウィンドウの大きさを変更します。

>>> frame.size = 200,50


プロパティー .size に値を設定すると、ウィンドウの幅/高さを更新できます。

>>> frame.title = "(^_^)"   


プロパティー .title に値を設定すると、ウィンドウのタイトル(文字列)を更新できます。

更新:パネル

ウィンドウ内にコンポーネントを配置するには、パネルを利用します。

    
>>> panel javax.swing.JPanel[null.contentPane,0,0,200x28,layout=javax.swing.JRootPane$1,alignmentX=0.0, alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=]
プロパティー .contentPane の値を参照すると(ウィンドウ内に配置した)パネル JPanel が得られます。
    
array(java.awt.Component, [javax.swing.JLabel[,0,0,200x28,alignmentX=0.0,alignmentY=0.0,border=, flags=8388608,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=, horizontalAlignment=LEADING,horizontalTextPosition=TRAILING,iconTextGap=4,labelFor=,text=Hello World, verticalAlignment=CENTER,verticalTextPosition=CENTER]])
プロパティー .components の値を参照すると(パネル内に配置した)コンポーネント群(配列 array の要素 Component)が得られます。そのひとつがラベル JLabel です。

更新:ラベル

次に、アプリケーションを実行中に、ラベルの表示を変更します。
>>> label = panel.components[0]    
>>> label
javax.swing.JLabel[,0,0,200x28,alignmentX=0.0,alignmentY=0.0,border=,flags=8388608,
maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,horizontalAlignment=LEADING,
horizontalTextPosition=TRAILING,iconTextGap=4,labelFor=,text=Hello,verticalAlignment=CENTER,
verticalTextPosition=CENTER]
プロパティー .components の要素を参照すると(パネル内に配置した)ラベル JLabel が得られます。
>>> label.text = "Happy"
プロパティー .text に値を設定すると、ラベルのテキスト(文字列)を更新できます。

Tips:状態(属性)を更新する

アプリケーションを実行中に、その状態(属性)を更新できることを確認しました。《次回》は、その機能(操作)を追加できることを確認します。 》作業中です《

Tips:JavaBeans との連携

>>> frame.setSize(200,50)
>>> frame.setTitle("(^_^)")
。《》□
Last updated♪09/04/17