Jython-event-handling
Jython-イベント処理
Java swingでのイベント処理では、コントロール(JButtonやJListなど)をそれぞれのイベントリスナーに登録する必要があります。 イベントリスナインターフェイスまたは対応するアダプタクラスは、そのイベント処理メソッドをオーバーライドして実装またはサブクラス化する必要があります。 Jythonでは、イベント処理は非常に簡単です。 コントロールに対応するイベント処理関数のプロパティとして任意の関数を渡すことができます。
まず、Javaでクリックイベントがどのように処理されるかを見てみましょう。
まず、* java.awt.eventパッケージ*をインポートする必要があります。 次に、JFrameを拡張するクラスは、ActionListenerインターフェイスを実装する必要があります。
次に、JButtonオブジェクトを宣言し、フレームのContentPaneに追加し、addActionListener()メソッドによってActionListenerに登録する必要があります。
ここで、ActionEventを処理するには、ActionListenerインターフェイスのactionPerformed()メソッドをオーバーライドする必要があります。
以下はJavaコード全体です-
次に、同じコードに相当するJythonコードを記述します。
まず、ActionEventまたはActionListenerをインポートする必要はありません。Jythonの動的な型付けにより、これらのクラスをコードで言及することを回避できるためです。
第二に、ActionListenerを実装またはサブクラス化する必要はありません。 代わりに、ユーザー定義関数は、 actionPerformed Beanプロパティの値としてJButtonコンストラクターにすぐに提供されます。
- clickhere()*関数は、ボタンのクリックイベントを処理する通常のJython関数として定義されています。
Jythonの同等のコードを次に示します。
JavaとJythonのコードの出力は同じです。 ボタンがクリックされると、コンソールに「クリックされました」というメッセージが印刷されます。
次のJythonコードでは、2つのJTextFieldオブジェクトがJFrameウィンドウに提供され、「phy」と「maths」にマークを入力します。 JButtonオブジェクトは、クリックされるとadd()関数を実行します。
add()関数は、getText()メソッドによって2つのテキストフィールドの内容を読み取り、それらを整数に解析して、加算を実行できるようにします。 結果は、setText()メソッドによって3番目のテキストフィールドに配置されます。
完全なコードは以下のとおりです-
上記のコードがコマンドプロンプトから実行されると、次のウィンドウが表示されます。 「Phy」、「数学」のマークを入力し、「追加」ボタンをクリックします。 結果はそれに応じて表示されます。
Jython JRadioButtonイベント
JRadioButtonクラスは* javax.swingパッケージ*で定義されています。 オンまたはオフ状態の選択可能なトグルボタンを作成します。 ButtonGroupに複数のラジオボタンが追加される場合、それらの選択は相互に排他的です。
次の例では、JRadioButtonクラスの2つのオブジェクトと2つのJLabelが、垂直BoxLayoutのJpanelコンテナーに追加されます。 JRadioButtonオブジェクトのコンストラクターでは、* OnCheck()*関数がactionPerformedプロパティの値として設定されます。 この関数は、ラジオボタンをクリックして状態を変更すると実行されます。
ラジオボタンのデフォルトの状態はfalse(選択されていない)であることに注意してください。 ボタンrb1は、開始状態がTrue(選択済み)で作成されます。
2つのラジオボタンは、相互に排他的にするためにラジオButtonGroupに追加されるため、一方を選択すると、他方は自動的に選択解除されます。
これらの2つのラジオボタンと2つのラベルは、rb2とlbl2の間の高さが25ピクセルの区切り領域を持つ垂直レイアウトのパネルオブジェクトに追加されます。
このパネルは最上位のJFrameオブジェクトに追加され、その可視プロパティは最後に「True」に設定されます。
上記のJythonスクリプトを実行し、ラジオボタンの選択を変更します。 選択内容は、下部のラベルに表示されます。
Jython JCheckBoxイベント
次の例では、swingパッケージの2つのチェックボックスとラベルが、垂直BoxLayoutのJPanelに追加されます。 下部のラベルには、2つのチェックボックスの瞬間的な選択状態が表示されます。
両方のチェックボックスは、* OnCheck()*関数に設定されたactionPerformedプロパティを持つコンストラクターで宣言されます。
OnCheck()関数は、各チェックボックスの選択状態を確認し、対応するメッセージを下部のラベルに表示します。
これらのボックスとJLabelオブジェクトは、高さ50ピクセルのスペースホルダーを追加してJPanelに追加されます。
パネル自体は最上位のJFrameウィンドウに追加され、その可視プロパティは最終的にtrueに設定されます。
上記のコードを実行し、チェックボックスの選択を試してください。 両方のチェックボックスの瞬間的な状態が下部に表示されます。
Jython JListイベント
swingパッケージのJListコントロールは、選択可能な項目のスクロール可能なリストをユーザーに提供します。 JComboBoxは、アイテムのドロップダウンリストを提供します。 Javaでは、ListSelectionListenerにvalueChanged()メソッドを実装することにより、選択イベントが処理されます。 Jythonでは、イベントハンドラーはJListオブジェクトのvalueChangedプロパティに割り当てられます。
次の例では、JListオブジェクトとラベルがBorderLayoutのJFrameに追加されます。 JListには、タプル内のアイテムのコレクションが入力されます。 そのvalueChangedプロパティはlistSelect()関数に設定されます。
イベントハンドラー関数は、選択されたアイテムのインデックスを取得し、JListオブジェクトから対応するアイテムをフェッチして、下部のラベルに表示します。
JListおよびJLabelオブジェクトは、BorderLayoutを使用してJFrameに追加されます。
コード全体を以下に示します-
次のコードの出力は次のとおりです。