Python 弾丸ツアー/Java: JavaBeans 準拠 ... step 1: モジュールを取り込む
Python.use(better); Python 弾丸ツアー/Java: JFC/Swing 編
>>> JavaBeans 準拠
step 1: モジュールを取り込む
《Python3.1|Jython2.5|IronPython2.6》
step 1: ウィンドウを表示する
■ モジュールを取り込む
 ̄コードを記述するには、必要なモジュールを事前に取り込む必要があります。Java で記述した、
import javax.swing.JFrame;
と同等のコードは、Jython では、
from javax.swing import JFrame
になりますが、構文に違いはあっても、その意義に違いはありません。また、Java では、次のようにして
import javax.swing.*;
モジュール内のすべてのクラスを取り込めますが、これと同等のことを Jython では、
import javax.swing
のようにすると、
def tips(): frame = javax.swing.JFrame() ...
各クラス JFrame を含むモジュール javax.swing の名前を明示する必要があります。
■ インスタンスを初期設定する
 ̄Java では、生成したインスタンスを初期設定するのに(クラス名と同じ)コンストラクターを利用します。
JFrame frame = new JFrame("JFC/Swing"); ... frame.setPreferredSize(new Dimension(150, 50));
frame = JFrame("Swing") ... frame.setPreferredSize(Dimension(150, 50))
クラスも呼び出し可能オブジェクトなので、演算子 () を適用するだけです。このとき、new は不要です。
■ JavaBeans 準拠
 ̄Jython では、JavaBeans に準拠するものには、便利な機能を提供します。すると、前述したコードは、
frame = JFrame() frame.title = "Swing" frame.defaultCloseOperation = JFrame.EXIT_ON_CLOSE frame.preferredSize = (150, 50) frame.pack() frame.visible = True
このように記述できます。
■ setter
 ̄インスタンス属性を設定するのに、setter を利用します。たとえば、インスタンス属性 title を設定するときには、get の後に属性の名前を続けた、メソッド setTitle が存在するものとします。このとき、set に続く最初の文字は大文字になります。すると、Java では、
JFrame frame = new JFrame(); frame.setTitle("Swing");
のようになりますが、Jython では、
frame = JFrame() frame.setTitle("Swing")
のようにして、ウィンドウのタイトル(文字列)を設定できます。さらに、Jython では、
frame = JFrame() frame.title = "Swing"
のようにして「インスタンス属性 title に値を設定している」かのような表現が可能になります。