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:JavaBeans との連携
>>> frame.setSize(200,50) >>> frame.setTitle("(^_^)")。《》□Last updated♪09/04/17