Shall_we_Agile = Java.use(better, Python) # Swing《3.3》イベントハンドラーを登録する
------------ 序 ------------
ここで公開している記事は「キーワード検索」を利用するための便宜的なものです。詳細は、正式版(査読中)をダウンロードしてご覧ください。
【目次】関連記事
〔Python/Jython/Swing 入門〕Shall_we_Agile = Java.use(better, Python) # Swing
実際のアプリケーション開発を疑似体験できるように、問題解決に至るまでの紆余曲折を示しながら「繰り返し段階的に」技術を習得するための話題を提
供します。OOP〔Object-Oriented
Programming〕を体得するには、五感を通してフィードバックが得られる論理的シミュレーションによって、現実世界を疑似体験するのが効果的で
す。この連載で、Java の常識が壊れるかもしれませんが、OOP の可能性は広がります。
【注意】連載の主旨から「先に示したプログラムが後で覆される」事例が含まれます。次の展開(失敗から何を学ぶか/学ばないか)を予想しながら読み進むのも一興です。
------------ 本文 ------------
《査読中》
気軽に Swing〔3〕JButton: ホーム&アウェー
Java.use(better,Swing=Jython) 〜 萬プログラマーのための Python 導入ガイド
伊藤うさぎ、森こねこ〔著〕 小泉ひよ子とタマゴ倶楽部〔監修〕
イベントハンドラーを登録する
ボタンを選択したときのイベントに応答するリスナーを設定するには、次のように、
public void addActionListener(ActionListener l)
メソッド addActionListener を利用します。引数 l には、インターフェース ActionListener を実現した、任意のリスナーオブジェクトを指定できます。リスナーには、次のメソッドを実現しておく必要があります。
void actionPerformed(ActionEvent e)
メソッド actionPerformed は、イベント ActionEvent が発生したときに呼び出されます。そして、発生したイベント e から、必要な情報を獲得できます。JavaBeans に準拠した Swing には、Jython の便利な機能を適用できます。すると、
view = new JButton();
view.addActionListener(
new ActionListener() {
public void actionPerformed(ActionEvent e) {
...
と同じ効果を得るのは簡単で、次のように、
view = JButton(
actionPerformed=now,
キーワード引数 actionPerformed= に、イベントハンドラーを指定するだけです。
インターフェースの規定に従うことを明確にするには、actionPerformed= を固定するだけで、addActionListener/ActionListener などは不要になります。
ここまでは、同じウィンドウ内に情報を表示してきました。今回は、ユニフォームを表示するために、新たなパネル/ウィンドウが必要になるので、工夫が必要です。
ウィンドウを開いてパネルを表示する
【例題】JButton を選択したときの日時を、新たなウィンドウに表示したい。
ボタンを選択すると、新たなウィンドウが現われて、そこに日時が表示されます。これを実現したのが、次のコードです。
class ClockPanel(JPanel):
def __init__(self, now):
self.add(JLabel(
text=`now`,
icon=ImageIcon("icons/clock.gif"),
))
def show(self):
frame = JFrame(
title="What time is it now?",
)
frame.add(self)
frame.pack()
frame.show()def ex_JButton_actionPerformed2():
def now(e): ClockPanel(Date()).show()
... No change ...
〈つづく〉
| 固定リンク
« Shall_we_Agile = Java.use(better, Python) # Swing《3.2》Swing:JButton | トップページ | Shall_we_Agile = Java.use(better, Python) # Swing《3.4》支援ツール:インスペクター 自身を観察する »
「.連載: Shall_we_Agile = Java.use(better, Python) # Swing」カテゴリの記事
- Shall_we_Agile = Java.use(better, Python) # Swing《6.5》モジュール:jarray(2008.04.25)
- Shall_we_Agile = Java.use(better, Python) # Swing《43》JList(3)選択したらどうなるの★(2007.05.30)
- Shall_we_Agile = Java.use(better, Python) # Swing《41》JList(1)もっと表示できるかな★(2007.05.28)
- Shall_we_Agile = Java.use(better, Python) # Swing《5.2》Swing:JLabel(2008.04.15)
- Shall_we_Agile = Java.use(better, Python) # Swing《1.2》Swing:JList(2008.03.11)
「JML/Java/Eclipse」カテゴリの記事
- Shall_we_Agile = Java.use(better, Python) # Swing《6.5》モジュール:jarray(2008.04.25)
- Java.use(better, Jython)《61》アジァイル開発:要求仕様の変更★(2008.03.03)
- Python.use(better, GUI=Tkinter)《33》事例:ヒストグラムと2値化(3)★★(2007.02.21)
- 連載: Java.use(better) Jython はじめました《11》JavaBeans(1)値の参照と変更(2007.09.10)
- Shall_we_Agile = Java.use(better, Python) # Swing《43》JList(3)選択したらどうなるの★(2007.05.30)
「Jython/Python」カテゴリの記事
- Shall_we_Agile = Java.use(better, Python) # Swing《6.5》モジュール:jarray(2008.04.25)
- 【準備中】連載: Java.use(better) Jython はじめました《1》文字列とリスト(1)★(2006.07.10)
- Java.use(better, Jython)《61》アジァイル開発:要求仕様の変更★(2008.03.03)
- Python.use(better, GUI=Tkinter)《33》事例:ヒストグラムと2値化(3)★★(2007.02.21)
- 連載: Java.use(better) Jython はじめました《11》JavaBeans(1)値の参照と変更(2007.09.10)





コメント