この記事の例では、コンテナ クラスのモニタリング、リスナー クラス、AbstractAction、リフレクションなど、Java の一般的なイベント応答メソッドをまとめています。ご参考までに。具体的な方法は以下のとおりです。
まず、 Java グラフィカル ユーザー インターフェイスでイベントを処理するために必要な手順は次のとおりです。
1. 応答を受け取るコンポーネント(コントロール)を作成する
2. 関連するイベントリスニングインターフェイスを実装する
3. イベントソースのアクションリスナーを登録する
4. イベント発生時のイベント処理
これにより、以下のような一元的なインシデント対応が可能となります。
1. コンテナ クラスの監視<br/>効果: フォーム内の 3 つのボタンをクリックすると、対応する応答時間が達成されます。
import java.awt.*; import java.awt.event.*; //クラスを宣言するときに、複数のリスニングメソッドを実装するために「implements ActionListener」を追加します。次にカンマで区切ります。 // たとえば、「implements ActionListener,KeyListener」 class ButtonListener extends JFrameimplements ActionListener{ JButton ok, cancel,exit; // 応答を受け入れるコンポーネントを作成します。これは 3 つのボタンです public ButtonListener(String title){ super(title); ok = new JButton("OK"); exit = new JButton("終了"); ; // 次の 3 つのステートメントはボタンのリスナーを登録します。 cancel.addActionListener(this); getContentPane().add(ok); getContentPane().add(cancel); getContentPane().add(exit); } //イベントがトリガーされたときにイベント処理を完了します public void actionPerformed(ActionEvent e){ if(e. getSource ()==ok) System.out.println("OK"); if(e.getSource()==cancel) System.out.println("Return"); if(e.getSource()==exit) System.exit(0);; } public static void main(String args[]) { ButtonListener pd=new ButtonListener("ActionEvent Demo"); pd.setVisible(true);
2. 監視クラスの効果を実現します。フォーム内の 3 つのボタンをクリックして、対応する対応時間を実現します。
import java.awt.*; import java.awt.event.*; import class ButtonListener1 extends JFrame { //ここでは JButton を監視する実装はありません。 public ButtonListener1(String title) { super( タイトル); this.setLayout(new FlowLayout()); ok = new JButton("OK"); 終了= new JButton("終了"); ok.addActionListener(new MyListener());; exit.addActionListener(new MyListener());; getContentPane().add(キャンセル); getContentPane().add(終了); } { ButtonListener pd=new ButtonListener("ActionEvent Demo"); pd.setSize(250,100) pd.setVisible(true); } } //アクション イベントをリッスンします。 class MyListener は ActionListener{ public void actionPerformed(ActionEvent e); e .getActionCommand()=="OK") System.out.println("OK"); if(e.getActionCommand()=="Return") System.out.println("Return"); if(e.getActionCommand()=="Exit") System.exit(0);;
3. AbstractAction クラスを使用して監視を実装する
効果: メニューをクリックして応答します
インポート java.awt.BorderLayout; インポート javax.swing.Action; インポート javax.swing.JMenuBar ; インポート javax.swing.JMenuItem; //このクラスは AbstractAction を継承し、actionPerformed() メソッドを実装する必要があります。 class AbstractEvent extends AbstractAction{ //private staticfinallongserialVersionUID=1L; AbstractEvent(){ } public void actionPerformed(ActionEvent e){ //確認ダイアログボックスをポップアップ if (e.getActionCommand()=="open"){ JOptionPane . showMessageDialog(null, "open"); }else if (e.getActionCommand()=="close"){ JOptionPane.showMessageDialog(null, "閉じる"); }else if (e.getActionCommand()=="run"){ JOptionPane.showMessageDialog(null, "Run") }else if (e.getActionCommand()==" stop"){ JOptionPane.showMessageDialog(null, "stop"); } } } public class TestAbstractEvent { private static JMenuBar menubar; private static JFrame Frame; //MenuEvent を指定するための特定のハンドラーは、AbstractEvent クラスによって完成されます。 最終アクション MenuEvent=new AbstractEvent(){frame=new JFrame("menu"); setLayout(new BorderLayout()); ("file"); // メニュー項目をインスタンス化し、openAction のリスナーを追加します。JMenuItem menuItemopen=new JMenuItem("開く"); JMenuItem menuItemclose("閉じる"); menuFile.add(menuItemclose); "); JMenuItem menuItemrun=new JMenuItem("run"); menuItemrun.addActionListener(MenuEvent); menuItemstop.addActionListener(MenuEvent); .add(メニューファイル); menubar.add(menuTool); フレーム.setSize(400,200); } { 新しい TestAbstractEvent() } }
4. AbstractAction クラス + リフレクション メソッド<br/>効果: ツールバーの 3 つのボタンをクリックすると、ボタンの名前を通じて、リフレクションはボタンと同じ名前のクラス実装の応答を取得します。
import java.awt.BorderLayout; import javax.swing.*; private String ActionName=""; ViewAction(){ } public ViewAction(String ActionName){ this.ActionName=ActionName } @Override public void; actionPerformed(ActionEvent e) { アクション action=getAction(this.ActionName); action.execute(); } private Action getAction(String ActionName){ try{ if (this.action==null){ アクション action=(Action)Class .forName(ActionName).newInstance(); this.action=action; }catch(Exception e){ return null; extends JFrame { public JToolBar bar=new JToolBar(); String buttonName[]={"b1","b2","b3"}; public TestAE(){ for (int i=0; i<buttonName.length;i++){ ViewAction action=new ViewAction(buttonName[i]); JButton button=new JButton(buttonName[i]); button.addActionListener(action); } this.getContentPane().add(bar,BorderLayout.NORTH); this.setLocationRelativeTo(null); true); } public static void main(String [] args){ new TestAE() } } インターフェイス { void execute(); } クラス b1 は Action{ public voidexecute(){ JOptionPane.showMessageDialog(null, "b1 がクリックされました") } } クラス b2 は Action{ public voidexecute(){ JOptionPane.showMessageDialog(null, " b2) を実装しますクリックされました"); } } class b3 実装 Action{ public voidexecute(){ JOptionPane.showMessageDialog(null, "クリックされましたb3"); } }
上記の例は十分に説明されているので、理解するのは難しくありません。この記事で説明した例が皆様のお役に立てば幸いです。