Actionインタフェースの使用

2501 ワード

多くのコンポーネントは同じイベントを処理する必要があります.例えば、通常、1つのソフトウェアはユーザーの習慣によって設計されます.
文書エディタでは、メニューにcopy機能が表示される場合があります.
ツールバーに表示されることもありますが、表示方法は異なりますが、
しかし、いずれもcopyの機能に達することができます.私たちの前のイベント処理方法では、copyの機能を実現する必要があります.
プログラムコードの重複性が高すぎて、読みにくくて美しくありません.Actionインタフェースを使用する処理方法があります
『』Actionは表面的には「動作・行為」、つまりActionインタフェースを実現する対象であり、それ自体が業務であり、一種の業務である
処理機能では、このビジネス・オブジェクトを使用して、通常のボタン、メニュー・アイテム、ツールバー・ボタンなど、異なるコンポーネントを作成できます.
同じ機能を持っています
『』アクションインタフェースの使い方について詳しく説明します
1、ActionインタフェースはActionListenerインタフェースのサブインタフェースであり、ActionListenerインタフェースのactionPerformed()メソッドを含むほか、
名前とiconの2つのプロパティも含まれています.名前は作成されたボタンまたはメニュー項目のテキストラベルを指定し、iconはボタンのアイコンまたは
メニュー項目のアイコン.すなわち、Actionインタフェースが「イベントリスニング」と「ボタンとメニュー項目に変換可能」を一体化していることは、上述した
機能
2、実際にJButtonの構造方法public JButton(アクション)において、JToolBarのadd(アクション)およびJMenuの
add(Action)メソッドでは、Actionオブジェクトをパラメータとして使用して、Actionをボタンやメニュー項目に自動的に変換できることがわかります.
Actionオブジェクトを定義するだけで、上記のメソッドを呼び出すだけで自動的にActionをコンポーネントに変換できます.
3、上記のように、Action自体はコンポーネントではなく、JButtonの構造方法を適用するか、指定したコンポーネントコンテナにActionを追加するしかない(JToolBarまたはJMenu)
値をコンポーネントに変換できる
4、上記の項目をまとめると、Actionを受信する容器(またはJButton)は以下のいくつかの作業を完了する必要があります.
①addメソッドでActionオブジェクトを追加する
②Actionオブジェクトのnameとicon属性に基づいて、ボタンまたはメニュー項目を自動的に作成する
③Actionオブジェクトがアプリケーションコンポーネント登録イベントリスナーであることにより、システムはそのActionによって作成されたすべてのコンポーネントに同じイベントリスナーを登録する
(イベントプロセッサはActionオブジェクトのactionPerformed()メソッドです)
④アクションインタフェースには、現在のアクションがアクティブ化されているかどうかを指定するsetEnabled(boolean)メソッドがあります.
1つのAction動作がアクティブになってから、対応するコンポーネントが③のリスナーを使用してビジネスを処理できるのはなぜですか?例えば、私たちは
「コピー」「貼り付け」の2つのアクション・ビジネスでは、コピーが完了した場合にのみ、「貼り付け」ビジネスがアクティブになります.そうしないと、「貼り付け」ビジネスはデフォルトです.
アクティブ化されていないはずです
基本的な論理が明らかになったら、次はアクションオブジェクトを作成する方法です.一般的には、直接作成するわけではありません.
Actionインタフェースを実装するクラスは、その後、このクラスを介してActionタイプのオブジェクトを作成するのではなく、AbstractAction抽象クラスを実装するクラスを作成する.
この抽象クラスAbstractActionはActionインタフェースを実現し,この抽象クラスはactionPerformed()メソッドを除いて,
アクションにsetEnabled(boolean)を含むすべての方法が実装されており、setEnabled()を直接使用することができます.
泳ぎ方を待つ.ではAbstractAction抽象クラスではactionPerformed()メソッドだけが実装されていません.このメソッドは
作成されたAbstractActionクラスを実装したクラスで実装されます.アクションオブジェクトを作成する手順は次のとおりです.
①Abstraaction抽象クラスを継承するクラス(bクラスとする)を作成する
②bクラスの構築方法を作成し、Abstraactionのnameとicon属性に値を付与する
(Abstraaction抽象クラスに構築方法publicがある  AbstractAction(String name,Icon icon) )
③bクラスでactionPerformed()メソッドを実装し、いくつかのビジネス処理では、いくつかの他のビジネスをアクティブ化またはクローズすることに注意する
『』はこのようにはっきりしていて、具体的な例は『クレイジーJava講義』P 454を参照することができます.