JAva GUIプログラミングのリスニング操作例分析

4430 ワード

この例ではjava GUIプログラミングのリスニング操作について説明します.皆さんの参考にしてください.具体的には以下の通りです.
Frameのcomponentコンポーネントをクリックすると、それに応じた効果が得られますが、それに応じてリスニングを行い、そのオブジェクトであることを特定しなければなりません.その操作ですが、cupでアクティブなリスニングを行うと大量のリソースが消費されるため、受動的なリスニングがあり、つまり対応するイベントが発生すると自動的に関連コードが実行されます.
Buttonリスニング:
instance 1:

import java.awt.*;
import java.awt.event.*;
public class MoniterStart {
 public static void main(String[] args) {
 Frame f = new Frame();
 Button b = new Button("Press ");
 f.add(b,BorderLayout.CENTER);
 MyMonitor bh = new MyMonitor();
 b.addActionListener(bh);
 f.setBounds(100, 100, 300, 300);
 f.setVisible(true);
 }
}
class MyMonitor implements ActionListener{
 public void actionPerformed(ActionEvent e) {
 System.out.println("aAH");
 }
}


受動的な傍受を行うには、どこでどのようなタイプのcomponetが発行されたのかを決定する必要があります.私たちはすべての情報を提供することはできません.そのため、私たちは初めてイベントに対応するオブジェクトを構築しました.それはインタフェースを実現し、イベントが発生すると、対応するイベントメソッドを呼び出します.すなわち(implements ActionListener)であり、対応する実装方法は、イベント動作の提供を要求する.
instance 2:

import java.awt.*;
import java.awt.event.*;
public class Monitor2 {
 public static void main(String[] args) {
 Frame f1 = new Frame();
 Button b1 = new Button("Start ");
 Button b2 = new Button("Stop ");
 b1.setActionCommand("The End");
 f1.add(b1,BorderLayout.CENTER);
 f1.add(b2,BorderLayout.SOUTH);
 MyMonitor1 bh = new MyMonitor1();
 b1.addActionListener(bh);
 b2.addActionListener(bh);
 f1.setBounds(100, 100, 300, 300);
 f1.setVisible(true);
 }
}
class MyMonitor1 implements ActionListener{
 public void actionPerformed(ActionEvent e) {
 System.out.println("aAH you get it " + e.getActionCommand());
 }
}


注意:1つのリスナーが複数のbuttonオブジェクトをリスニングする場合は、setActionCommandで区別できます.これは、1つのプロパティまたはタグに相当します.
TextField(テキスト入力傍受)
instance 3;

import java.awt.*;
import java.awt.event.*;
public class TfMonitor {
 public static void main(String[] args) {
 new TFFrame();
 }
}
class TFFrame{
 TFFrame(){
 Frame f = new Frame("TF");
 TextField tf = new TextField();
 f.add(tf);
 tf.addActionListener(new TFFrameMonitor());
 f.setBounds(100, 100, 300, 300);
 f.setVisible(true);
 }
}
/*
class TFFrame extends Frame{
 TFFrame(){
// Frame f = new Frame("TF");
 TextField tf = new TextField();
 add(tf);
 tf.addActionListener(new TFFrameMonitor());
// f.setBounds(100, 100, 300, 300);
 setBounds(100, 100, 300, 300);
 setVisible(true);
 }
}
*/
class TFFrameMonitor implements ActionListener{
 public void actionPerformed(ActionEvent e) {
 TextField text = (TextField)e.getSource();
 System.out.println(text.getText());
// text.setText(null);
 }
}


TextFieldはテキストクラスを入力するコンポーネントであり,Frameクラスについては直接Frameで構成することができ,1つのFrameのオブジェクトを直接生成することができ,もう1つのFrameを直接継承することができる.これはすでに1つのFrameクラスが存在していることに相当し,Frame裏面の方法を直接使用することができる.
注:上のsetText(null)は、入力が完了してリターンキーを押すと、入力ボックスのデータが自動的に空になります.なければ、存在し続けます.
instance 4:

import java.awt.Frame;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class TFFrame2Monitor {
 public static void main(String[] args) {
 new TFFrame2();
 }
}
class TFFrame2 extends Frame{
 TFFrame2(){
 TextField tf = new TextField();
 add(tf);
 tf.addActionListener(new TFFrameMonitor2());
 tf.setEchoChar('*');
 setBounds(100, 100, 300, 300);
 setVisible(true);
 }
}
class TFFrameMonitor2 implements ActionListener{
 public void actionPerformed(ActionEvent e) {
 TextField text = (TextField)e.getSource();
 System.out.println(text.getText());
 text.setText(null);
 }
}


Text FiledオブジェクトにsetEchoCharを追加しただけで、入力後の表面表示を表します.ない場合、つまり入力のために何が表示され、追加した場合は入力パスワードと同じように上書きされます.
Javaアルゴリズムに関する詳細に興味のある方は、「Javaデータ構造とアルゴリズムチュートリアル」、「Java操作DOMノードテクニックまとめ」、「Javaファイルとディレクトリ操作テクニックまとめ」、「Javaキャッシュ操作テクニックまとめ」のトピックを参照してください.
本文で述べたjavaプログラム設計に役立つことを願っています.