Java.use(better,Python)《2》ウィンドウを配置する
|記事一覧|《こちらに移動中です》2006年9月 5日 (火)
Java.use(better, Python) # Jython はじめました
《2》ウィンドウを配置する《Jython2.5.0》
■ 概要
プログラマーにとっての「地デジ」対応は進んでいますか? ここでは、アナログ世代(Java/C#)からディジタル世代(Ruby/Python)への脱皮を目指して、「真のアジャイル対応」への準備を怠りない、プログラマーのみなさんを支援する話題を提供します。Java/C# が抱える深刻な問題は「対岸の火事」とばかりも言っていられません。Java/C# の常識は、オブジェクト指向の非常識。さあ、ご一緒に「真のオブジェクト指向」の世界へと続く扉を開いてみませんか。
■ 関連記事
ウィンドウを配置する
次のコードの断片を実行すると、
>>> f = JFrame('Happy')
次のようなエラーメッセージが表示されます。
Traceback (most recent call last): File "", line 1, in NameError: name 'JFrame' is not defined
ここで、NameError とあるのは、JFrame を認識できないからです。Java で記述されたコードを利用するには、必要なリソースを取り込む必要があります。そこで、JFrame を含むパッケージを参照するのに必要なコードを追加します。
>>> from javax.swing import * >>> f = JFrame('Happy') >>> f.setVisible(True)
from/import 文によって、パッケージ javax.swing に含まれるクラス群を、Jython で記述された他のクラスと同様に扱えるようになります。
ここで注目して欲しいのは、演算子 new が不要になることです。Jython では「クラスもオブジェクト」として扱えるので、Java のコンストラクター呼び出しのように「冗長な」構文は不要です。すると、関数/メソッドと同様に、簡潔で「統一された」表現が可能になります。
これを実行すると、次のようなウィンドウが、画面の左上に現われます。ウィンドウを大きくすると、そのタイトルが Happy になっているのが分かります。
さらに、同じことは、次のように記述できます。
>>> f = JFrame('Happy') >>> f.visible = True
Swing は JavaBean に準拠しているので、メソッド呼び出し setVisible() を利用すると、set を除いた属性 visible に値を設定できます。Jython では、メソッド呼び出しの代用表現が可能です。つまり、
f.x = @
と
f.setX(@)
とは同等になります。そのため、C# のプロパティーと同様に、簡潔で「統一された」表現が可能になります。さらに、数行のコードを追加します。
>>> f = JFrame() >>> f.defaultCloseOperation = JFrame.EXIT_ON_CLOSE >>> f.size = 150,100 >>> f.title = 'Happy' >>> f.visible = True
defaultCloseOperation には、ウィンドウを閉じるときの動作を設定します。size には、ウィンドウの大きさ (幅,高さ) を設定します。title には、ウィンドウのタイトルを設定します。さらに、同じことは、次のように記述できます。
>>> f = JFrame( ... defaultCloseOperation = JFrame.EXIT_ON_CLOSE, ... size = (150,100), ... title = 'Happy', ... visible = True)
その違いは、キーワード引数を使って、値を設定していることです。