[戻る]

10-----マウスのクリックイベント確認

/* 
   */
import java.applet.*;
import java.awt.*;//描画の場合は、java.awt.クラスを使えるようにする必要がある。
import java.awt.event.*; //MouseListenerインターフェイスを使う。

public class applet10 extends Applet implements MouseListener {
	
	XY2 p;	//中心点より描画する機能の自作クラス

	public void init(){//アプレットがロードされた時に呼ばれる。
		this.setBackground(new Color(0,255,255));
		p = new XY2(0,0);
		this.addMouseListener(this);
	}
	
	public void paint(Graphics g){//システムからの描画要求で呼ばれる
		g.setColor(new Color(255,0,0));
		p.drawX(g,5);	//×の描画
		
	}
	
	public void mouseClicked(MouseEvent e){
		int x = e.getX();	//マウスクリックイベントが発生した位置を取得
		int y = e.getY();
		this.showStatus(x + "," + y + ":Clicked");//ブラウザのステータス表示	
		p.setLocation(x,y);	//位置変更
		this.repaint();		//再描画指示
	}
	//押した?
	public void mousePressed(MouseEvent e){showStatus("Pressed"); }
	//離された
	public void mouseReleased(MouseEvent e){showStatus("Released");}
	//入った?
	public void mouseEntered(MouseEvent e){showStatus("Entered");}
	//出た?
	public void mouseExited(MouseEvent e){showStatus("mouseExited");}
}

[戻る]

101-----マウスのクリックイベント確認2(座標を配列へ記憶することで全て表示)

/* 
   */
import java.applet.*;
import java.awt.*;//描画の場合は、java.awt.クラスを使えるようにする必要がある。
import java.awt.event.*; //MouseListenerインターフェイスを使う。

public class applet101 extends Applet implements MouseListener {
	
	XY2 a[];
	int count = 0;	//初期化を伴うフィールド

	public void init(){//アプレットがロードされた時に呼ばれる。
		this.setBackground(new Color(0,255,255));
		a = new XY2[10];
		this.addMouseListener(this);
	}
	
	public void paint(Graphics g){//システムからの描画要求で呼ばれる
		g.setColor(new Color(255,0,0));
		for(int i = 0; i < a.length; i++){
			if(a[i] != null){
				a[i].drawX(g,5);
			}
		}
		//this.showStatus("要素数" + count);
	}
	
	public void mouseClicked(MouseEvent e){
		int x = e.getX();	//マウスクリックイベントが発生した位置を取得
		int y = e.getY();
		int status = e.getModifiers(); //状態を取得
		if((status & e.BUTTON1_MASK) != 0){	//左ボタンクリック
			XY2 p = new XY2(x,y);	//座標オブジェクト生成
			a[count++] = p;		//座標オブジェクト生成を配列へ設定
			this.showStatus(x + "," + y + "の" + count +"回目Clicked");
		}else if((status & e.BUTTON3_MASK) != 0){	//右ボタン
			this.showStatus(x + "," + y + "の右Clicked");
		}
		this.repaint();		//再描画指示
	}
	
	public void mousePressed(MouseEvent e){showStatus("Pressed"); }

	public void mouseReleased(MouseEvent e){showStatus("Released");}
	
	public void mouseEntered(MouseEvent e){showStatus("Entered");}
	
	public void mouseExited(MouseEvent e){showStatus("mouseExited");}

}

[戻る]

11-----マウスのモーションイベント確認(Vectorと言うクラスで座標集合を管理)

/* 
   */
import java.applet.*;
import java.awt.*;//描画の場合は、java.awt.クラスを使えるようにする必要がある。
import java.awt.event.*; //MouseMotionListenerインターフェイスを使う。
import java.util.*; //Vector クラスを使うため

public class applet11 extends Applet implements MouseMotionListener {
	Vector v = new Vector(); //配列のクラス(記憶は任意のインスタンスで値は不可)
	
	public void init(){//アプレットがロードされた時に呼ばれる。
		this.setBackground(new Color(0,255,255));
		this.addMouseMotionListener(this);
	}
	
	public void paint(Graphics g){//システムからの描画要求で呼ばれる
		g.setColor(new Color(255,0,0));
		g.drawString("Vector size:" + v.size(),10,10);//確認のため
		for(int i = 0; i< v.size(); i++){
			Point p = (Point) v.get(i);	//i の添え字要素を取得
			g.drawRect(p.x,p.y, 0,0); //点になる長方形描画
		}
	}
	
	public void mouseDragged(MouseEvent e){	//マウスをドラックした時
		int x = e.getX();	//マウスクリックイベントが発生した位置を取得
		int y = e.getY();
		showStatus(x + "," + y + ":Dragged");	//ブラウザのステータス表示
		v.add( new Point(x,y) );   //newで生成した点を配列の最後尾要素として追加
		repaint();//再描画指示
	}
	public void mouseMoved(MouseEvent e){ //マウスを移動した時
		int x = e.getX();	//マウスクリックイベントが発生した位置を取得
		int y = e.getY();
		this.showStatus(x + "," + y + ":Moved");	//ブラウザのステータス表示
	}
}

[戻る]

111-----マウスのモーションイベント確認2(Imageのインスタンスへに描いて、それをpaintで描画する)

/* 
   */
import java.applet.*;
import java.awt.*;//描画の場合は、java.awt.クラスを使えるようにする必要がある。
import java.awt.event.*; //MouseMotionListenerインターフェイスを使う。

import java.awt.image.*; //BufferedImageを使うため

public class applet111 extends Applet implements MouseMotionListener {
	
	Image image;	//画像管理用
	
	public void init(){//アプレットがロードされた時に呼ばれる。
		this.setBackground(new Color(0,255,255));
		this.addMouseMotionListener(this);
		
		image = new BufferedImage(230,170,BufferedImage.TYPE_INT_RGB);//画像生成
	}
	
	public void paint(Graphics g){//システムからの描画要求で呼ばれる
		g.setColor(new Color(255,0,0));
		g.drawImage(image, 0, 0, this);//記憶されるイメージを描画
	}
	
	public void mouseDragged(MouseEvent e){	//マウスをドラックした時
		int x = e.getX();	//マウスクリックイベントが発生した位置を取得
		int y = e.getY();
		Graphics graph = image.getGraphics();//imageに描画するためのGraphicsを取得
		graph.setColor(new Color(255,0,255));
		graph.drawString(x + "," + y + ":Dragged",10,10);//確認のため
		graph.drawRect(x,y,0,0);	//点になる長方形描画(幅と高さが0)
		repaint();//再描画指示
	}
	public void mouseMoved(MouseEvent e){ //マウスを移動した時
		int x = e.getX();	//マウスクリックイベントが発生した位置を取得
		int y = e.getY();
		this.showStatus(x + "," + y + ":Moved");	//ブラウザのステータス表示
	}
}

[戻る]

112-----マウスのモーションイベント確認3(updateで画面をクリアせずに、paintを呼ぶスタイル)

/* 
   */
import java.applet.*;
import java.awt.*;//描画の場合は、java.awt.クラスを使えるようにする必要がある。
import java.awt.event.*; //MouseMotionListenerインターフェイスを使う。

import java.awt.image.*; //BufferedImageを使うため

public class applet112 extends Applet implements MouseMotionListener {
	
	Image image;	//画像管理用
	
	public void init(){//アプレットがロードされた時に呼ばれる。
		this.setBackground(new Color(0,255,255));
		this.addMouseMotionListener(this);
		
		image = new BufferedImage(230,170,BufferedImage.TYPE_INT_RGB);//画像生成
	}
	
	public void paint(Graphics g){//システムからの描画要求で呼ばれる
		g.setColor(new Color(255,0,0));
		g.drawImage(image, 0, 0, this);//記憶されるイメージを描画
	}
	
	public void mouseDragged(MouseEvent e){	//マウスをドラックした時
		int x = e.getX();	//マウスクリックイベントが発生した位置を取得
		int y = e.getY();
		Graphics graph = image.getGraphics();//imageに描画するためのGraphicsを取得
		graph.setColor(new Color(255,0,255));
		graph.drawString(x + "," + y + ":Dragged",10,10);//確認のため
		graph.drawRect(x,y,0,0);	//点になる長方形描画(幅と高さが0)
		repaint();//再描画指示
	}
	public void mouseMoved(MouseEvent e){ //マウスを移動した時
		int x = e.getX();	//マウスクリックイベントが発生した位置を取得
		int y = e.getY();
		this.showStatus(x + "," + y + ":Moved");	//ブラウザのステータス表示
	}

	public void update(Graphics g){ //画面をクリアせずに、paintを呼ぶスタイル
		paint(g);
	}
}

[戻る]

113-----マウスのモーションイベント確認3(Runnableインターフェイスの利用し、Imageのインスタンスへに描いて、スレッドの再描画指示で行う)

/* 
   */
import java.applet.*;
import java.awt.*;//描画の場合は、java.awt.クラスを使えるようにする必要がある。
import java.awt.event.*; //MouseMotionListenerインターフェイスを使う。

import java.awt.image.*; //BufferedImageを使うため

public class applet113 extends Applet implements MouseMotionListener, Runnable {
	
	Image image;	//画像管理用
	Thread thread;	//スレッド管理フィールド
	
	public void init(){//アプレットがロードされた時に呼ばれる。
		this.setBackground(new Color(255,255,255));
		this.addMouseMotionListener(this);
		
		image = new BufferedImage(230,170,BufferedImage.TYPE_INT_RGB);//画像生成
		Graphics graph = image.getGraphics();//imageに描画するためのGraphicsを取得
		graph.setColor(new Color(255,255,255));
		graph.fillRect(0,0,230,170);
		thread = new Thread(this);	//スレッド生成
		thread.start();		//これより下のrunメソッドを平行して実行
	}
	
	public void paint(Graphics g){//システムからの描画要求で呼ばれる
		g.drawImage(image, 0, 0, this);//記憶されるイメージを描画
	}
	
	public void mouseDragged(MouseEvent e){	//マウスをドラックした時
		int x = e.getX();	//マウスクリックイベントが発生した位置を取得
		int y = e.getY();
		Graphics graph = image.getGraphics();//imageに描画するためのGraphicsを取得
		graph.setColor(new Color(255,0,255));
		graph.drawString(x + "," + y + ":Dragged",10,10);//確認のため
		graph.drawRect(x,y,0,0);	//点になる長方形描画(幅と高さが0)
	}
	public void mouseMoved(MouseEvent e){} //マウスを移動した時
	
	public void run() {
		while(true){
			try {
				Thread.sleep(100);//ミリ秒待つ
				repaint();//再描画指示
			}
			catch(java.lang.InterruptedException e1){
				showStatus(e1.toString());
			}
		}
	}
}


[戻る]

12----ボタンクリックのプログラムその1(アクションリスナーをAppletに作る)

//ボタンをクリックしたらテキストフィールドの内容をテキストエリアに追加するプログラム
/* 
   */
import java.applet.*;
import java.awt.*;//各種部品の使用
import java.awt.event.*;

public class applet12 extends Applet implements ActionListener {
	TextField txt1;			//テキスト1行管理用
	Button btn1;			//ボタン管理用
	TextArea text5_30;	//テキスト5行30桁管理用

	public void init(){//アプレットがロードされた時に呼ばれる。
		txt1 = new TextField("",20);
		add(txt1);	//アプレットへ追加
		btn1 = new Button("←入力後");
		add(btn1);  //アプレットへ追加
		text5_30 = new TextArea("",5,30);
		add(text5_30);  //アプレットへ追加
		
		//このアプレットに書いたactionPerformedメソッドを、btn1リックの処理として登録!
		btn1.addActionListener(this);
	}
	
	public void actionPerformed(ActionEvent e){
		String str = this.txt1.getText(); //テキストフィールド文字列取得
		this.text5_30.append(str + "\n"); 	//テキストエリア末尾に追加
	}
}


[戻る]

13 ----ボタンクリックのプログラムその2(アクションリスナーをApplet以外のクラス(アダプター)に作る)

//ボタンをクリックしたらテキストフィールドの内容をテキストエリアに追加するプログラム
/* 
   */
import java.applet.*;
import java.awt.*;//各種部品の使用
import java.awt.event.*;

class ButtonAdapter implements ActionListener {
	applet13 that;	//処理対象のapplet12を管理
	
	public ButtonAdapter(applet13 it){//コンストラクタ
		that = it;
	}
	public void actionPerformed(ActionEvent e){
		String str = that.txt1.getText(); //テキストフィールド文字列取得
		that.text5_30.append(str + "\n"); 	//テキストエリア末尾に追加
	}
}

public class applet13 extends Applet  {
	TextField txt1;			//テキスト1行管理用
	Button btn1;			//ボタン管理用
	TextArea text5_30;	//テキスト5行30桁管理用

	public void init(){//アプレットがロードされた時に呼ばれる。
		txt1 = new TextField("",20);
		add(txt1);	//アプレットへ追加
		btn1 = new Button("←入力後");
		add(btn1);  //アプレットへ追加
		text5_30 = new TextArea("",5,30);
		add(text5_30);  //アプレットへ追加
		
		ButtonAdapter adapter = new ButtonAdapter(this);
		//このadapterに書いたactionPerformedメソッドを、btn1リックの処理として登録!
		btn1.addActionListener(adapter);
	}
}

[戻る]

14 ----複数ボタンのクリックプログラム その1

//ボタンをクリックしたらテキストフィールドの内容をテキストエリアに追加するプログラム
//これにテキストエリアを消去するボタンを追加した例で、AppletにActionListenerを実装している。
/* 
   */
import java.applet.*;
import java.awt.*;//各種部品の使用
import java.awt.event.*;

class ButtonAdapter2 implements ActionListener {
	applet14 that;	//処理対象のapplet14を管理
	
	public ButtonAdapter2(applet14 it){//コンストラクタ
		that = it;
	}
	public void actionPerformed(ActionEvent e){
		String str = that.txt1.getText(); //テキストフィールド文字列取得
		that.text5_30.append(str + "\n"); 	//テキストエリア末尾に追加
	}
}

public class applet14 extends Applet implements ActionListener {
	TextField txt1;			//テキスト1行管理用
	Button btn1;			//ボタン管理用
	TextArea text5_30;	//テキスト5行30桁管理用
	Button btn2;			//追加したボタン用

	public void init(){//アプレットがロードされた時に呼ばれる。
		txt1 = new TextField("",20);
		add(txt1);	//アプレットへ追加
		btn1 = new Button("←入力後");
		text5_30 = new TextArea("",5,30);
		add(btn1);  //アプレットへ追加
		add(text5_30);  //アプレットへ追加
		
		ButtonAdapter2 adapter = new ButtonAdapter2(this);
		//このadapterに書いたactionPerformedメソッドを、btn1リックの処理として登録!
		btn1.addActionListener(adapter);
		
		//追加ボタン用
		btn2 = new Button("    クリア!    ");
		add(btn2);
		btn2.addActionListener(this);// AppletのactionPerformedメソッドに処理させる。
	}

	public void actionPerformed(ActionEvent e){
		text5_30.setText(""); //空の文字列を設定
	}
}

[戻る]

141 複数ボタンのクリックプログラム その2

//ボタンをクリックしたらテキストフィールドの内容をテキストエリアに追加するプログラム
//これにテキストエリアを消去するボタンを追加した例で、Buttonクラスの継承クラスとして
//追加用、クリア用それぞれのボタンクラスを作り、それぞれの中に自身のactionPerformed
//メソッドを定義している。(アプレットの中が簡潔になっている!)

/* 
   */
import java.applet.*;
import java.awt.*;//各種部品の使用
import java.awt.event.*;

class Applet141AppndButton extends Button implements ActionListener {	//追加ボタンクラス
	applet141 that;	//処理対象のapplet141を管理
	public Applet141AppndButton(applet141 it){//コンストラクタ
		super("←入力後");
		that = it;
		this.addActionListener(this);//自身のactionPerformedメソッドに処理させる。
	}
	public void actionPerformed(ActionEvent e){
		String str = that.txt1.getText(); //テキストフィールド文字列取得
		that.text5_30.append(str + "\n"); 	//テキストエリア末尾に追加
	}
}

class Applet141ClearButton extends Button implements ActionListener {	//クリアボタンクラス
	applet141 that;	//処理対象のapplet141を管理
	public Applet141ClearButton(applet141 it){//コンストラクタ
		super("←クリア");
		that = it;
		this.addActionListener(this);//自身のactionPerformedメソッドに処理させる。
	}
	public void actionPerformed(ActionEvent e){
		that.text5_30.setText(""); //空の文字列を設定
	}
}

public class applet141 extends Applet {
	TextField txt1;			//テキスト1行管理用
	TextArea text5_30;	//テキスト5行30桁管理用

	public void init(){//アプレットがロードされた時に呼ばれる。
		txt1 = new TextField("",20);
		add(txt1);	//アプレットへ追加
		
		//アプレットへボタンを生成しながら追加
		add( new Applet141AppndButton(this) );  
		
		text5_30 = new TextArea("",5,30);
		add(text5_30);  //アプレットへ追加
		
		//アプレットへボタンを生成しながら追加
		add(new Applet141ClearButton(this));
	}
}

[戻る]

142 ----複数ボタンのクリックプログラム その3

//ボタンをクリックしたらテキストフィールドの内容をテキストエリアに追加するプログラム
//これにテキストエリアを消去するボタンを追加した例で、
//二つのボタンを1つのactionPerformedで(一つのリスナーで)処理する方法である。
//それは、actionPerformed引数のActionEventからイベントの発生源オブジェクトを
//getSourceメソッドで取得し、どのボタンと一致するか調べて分岐する方法である。

/* 
   */
import java.applet.*;
import java.awt.*;//各種部品の使用
import java.awt.event.*;

public class applet142 extends Applet implements ActionListener{
	TextField txt1;			//テキスト1行管理用
	TextArea text5_30;		//テキスト5行30桁管理用
	Button btn1;		//ボタン管理用
	Button btn2;
	
	public void init(){//アプレットがロードされた時に呼ばれる。
		txt1 = new TextField("",20);
		add(txt1);		//アプレットへ追加
		btn1 = new Button("←入力後"); //ボタン生成
		add(btn1);  	//アプレットへ追加
		text5_30 = new TextArea("",5,30);
		add(text5_30);  //アプレットへ追加
		
		//追加ボタン用
		btn2 = new Button("←クリア");
		add(btn2);
		
		btn1.addActionListener(this);//同じリスナーのthisを登録する。
		btn2.addActionListener(this);
	}

	public void actionPerformed(ActionEvent e){
		this.showStatus( e.toString() ); //イベント確認
		Object btn = e.getSource();	//イベント発生オブジェクト取得
		if (btn.equals( btn1 )){
			String str = txt1.getText(); //テキストフィールド文字列取得
			text5_30.append(str + "\n"); 	//テキストエリア末尾に追加
		} else if  (btn.equals( btn2 )){
			text5_30.setText(""); //空の文字列を設定
		}
	}
}


[戻る]

143 ----複数ボタンのクリックプログラム その4

//ボタンをクリックしたらテキストフィールドの内容をテキストエリアに追加するプログラム
//これにテキストエリアを消去するボタンを追加した例
//各ボタン専用のリスナーを実装したクラスをそれぞれ作成している。

/* 
   */
import java.applet.*;
import java.awt.*;//各種部品の使用
import java.awt.event.*;

class applet143AppndAdapter implements ActionListener {	//追加ボタンクラス
	applet143 that;	//処理対象のapplet143を管理
	public applet143AppndAdapter(applet143 it){//コンストラクタ
		that = it;
	}
	public void actionPerformed(ActionEvent e){
		String str = that.txt1.getText(); //テキストフィールド文字列取得
		that.text5_30.append(str + "\n"); 	//テキストエリア末尾に追加
	}
}

class applet143ClearAdapter  implements ActionListener {	//クリアボタンクラス
	applet143 that;	//処理対象のapplet143を管理
	public applet143ClearAdapter(applet143 it){//コンストラクタ
		that = it;
	}
	public void actionPerformed(ActionEvent e){
		that.text5_30.setText(""); //空の文字列を設定
	}
}

public class applet143 extends Applet {
	TextField txt1;		//テキスト1行管理用
	TextArea text5_30;	//テキスト5行30桁管理用

	public void init(){//アプレットがロードされた時に呼ばれる。
		txt1 = new TextField("",20);
		add(txt1);	//アプレットへ追加
		
		Button btn1 = new Button("←入力後"); //ボタン生成
		add(btn1);  //アプレットへ追加
		btn1.addActionListener(new applet143AppndAdapter(this));
		
		text5_30 = new TextArea("",5,30);
		add(text5_30);  //アプレットへ追加
		
		Button btn2 = new Button("クリア");	//ボタン生成
		add(btn2);
		btn2.addActionListener(new applet143ClearAdapter(this));
	}
}


[戻る]

144 ----複数ボタンのクリックプログラム その5

//ボタンをクリックしたらテキストフィールドの内容をテキストエリアに追加するプログラム
//これにテキストエリアを消去するボタンを追加した例
//各ボタン専用のリスナーを実装したクラスをそれぞれ作成していが、
//このクラスの定義位置applet143の位置より内部に移動して、applet144の内部のクラスに定義している。
//(⇒インナークラスと呼ぶ)
// インナークラスからは、それを包んでいる外側のクラスの情報(フィールドなど)をアクセスできるので
// この例では不要なコードがある。実際には、次の例(applet145)にすべきである。

/* 
   */
import java.applet.*;
import java.awt.*;//各種部品の使用
import java.awt.event.*;

public class applet144 extends Applet {

	class applet144AppndAdapter implements ActionListener {	//追加ボタンクラス
		applet144 that;	//処理対象のapplet144を管理
		public applet144AppndAdapter(applet144 it){//コンストラクタ
			that = it;
		}
		public void actionPerformed(ActionEvent e){
			String str = that.txt1.getText(); //テキストフィールド文字列取得
			that.text5_30.append(str + "\n"); 	//テキストエリア末尾に追加
		}
	}
	
	class applet144ClearAdapter  implements ActionListener {	//クリアボタンクラス
		applet144 that;	//処理対象のapplet144を管理
		public applet144ClearAdapter(applet144 it){//コンストラクタ
			that = it;
		}
		public void actionPerformed(ActionEvent e){
			that.text5_30.setText(""); //空の文字列を設定
		}
	}

	TextField txt1;		//テキスト1行管理用
	TextArea text5_30;	//テキスト5行30桁管理用

	public void init(){//アプレットがロードされた時に呼ばれる。
		txt1 = new TextField("",20);
		add(txt1);	//アプレットへ追加
		
		Button btn1 = new Button("←入力後"); //ボタン生成
		add(btn1);  //アプレットへ追加
		btn1.addActionListener(new applet144AppndAdapter(this));
		
		text5_30 = new TextArea("",5,30);
		add(text5_30);  //アプレットへ追加
		
		Button btn2 = new Button("クリア");	//ボタン生成
		add(btn2);
		btn2.addActionListener(new applet144ClearAdapter(this));
	}
}


[戻る]

145 ----複数ボタンのクリックプログラム その6

//ボタンをクリックしたらテキストフィールドの内容をテキストエリアに追加するプログラム
//これにテキストエリアを消去するボタンを追加した例
//applet144と同じ各ボタン専用のリスナーを実装したクラスをそれぞれ作成していが、
// インナークラスからは、それを包んでいる外側のクラスの情報(フィールドなど)を
// アクセスできるので、外部に作ったクラスに比べて、不要なコードがあり、 
//  applet144に対して、削除した例である。
/* 
   */
import java.applet.*;
import java.awt.*;//各種部品の使用
import java.awt.event.*;

public class applet145 extends Applet {
	//クラスの内部にクラスを定義!(インナークラス)
	class applet145AppndAdapter implements ActionListener {	//追加ボタンクラス
		public void actionPerformed(ActionEvent e){
			String str = txt1.getText(); //テキストフィールド文字列取得
			text5_30.append(str + "\n"); 	//テキストエリア末尾に追加
		}
	}
	
	class applet145ClearAdapter  implements ActionListener {	//クリアボタンクラス
		public void actionPerformed(ActionEvent e){
			text5_30.setText(""); //空の文字列を設定
		}
	}

	TextField txt1;		//テキスト1行管理用
	TextArea text5_30;	//テキスト5行30桁管理用

	public void init(){//アプレットがロードされた時に呼ばれる。
		txt1 = new TextField("",20);
		add(txt1);	//アプレットへ追加
		
		Button btn1 = new Button("←入力後"); //ボタン生成
		add(btn1);  //アプレットへ追加
		btn1.addActionListener(new applet145AppndAdapter());
		
		text5_30 = new TextArea("",5,30);
		add(text5_30);  //アプレットへ追加
		
		Button btn2 = new Button("クリア");	//ボタン生成
		add(btn2);
		btn2.addActionListener(new applet145ClearAdapter());
	}
}


[戻る]

146 ----複数ボタンのクリックプログラム(クラス名なしのクラスを生成記述個所で定義) その7

//ボタンをクリックしたらテキストフィールドの内容をテキストエリアに追加するプログラム
//これにテキストエリアを消去するボタンを追加した例
//インナークラスとしている定義位置を、addActionListener呼び出しの引数に渡す生成位置で、
//クラス名なしのクラス定義をしている。
//applet145 のapplet145AppndAdapter 、applet145ClearAdapter  の名前を付けないで、
//addActionListenerメソッド定義の引数位置で定義している。

/* 
   */
import java.applet.*;
import java.awt.*;//各種部品の使用
import java.awt.event.*;

public class applet146 extends Applet {
	TextField txt1;		//テキスト1行管理用
	TextArea text5_30;	//テキスト5行30桁管理用

	public void init(){//アプレットがロードされた時に呼ばれる。
		txt1 = new TextField("",20);
		add(txt1);	//アプレットへ追加
		
		Button btn1 = new Button("←入力後"); //ボタン生成
		add(btn1);  //アプレットへ追加
		btn1.addActionListener(new  ActionListener() {//ここでActionListener派生クラス定義
			public void actionPerformed(ActionEvent e){
				String str = txt1.getText(); //テキストフィールド文字列取得
				text5_30.append(str + "\n"); 	//テキストエリア末尾に追加
			}
		}	);
		
		text5_30 = new TextArea("",5,30);
		add(text5_30);  //アプレットへ追加
		
		Button btn2 = new Button("クリア");	//ボタン生成
		add(btn2);
		btn2.addActionListener(new  ActionListener() {//ここでActionListener派生クラス定義
			public void actionPerformed(ActionEvent e){
				text5_30.setText(""); //空の文字列を設定
			}
		}	);
	}
}

[戻る]

15---アダプターを作る実験プログラム

/*
    
    
   */
import java.awt.*;
import java.awt.event.*;

class WindowAdapter implements WindowListener { // なにもしてないけど実装している。(すでにあるので作らなくてよい)
	public void windowOpened(WindowEvent e){ }
	public void windowClosing(WindowEvent e){ }
	public void windowClosed(WindowEvent e){ }
	public void windowIconified(WindowEvent e){ }
	public void windowDeiconified(WindowEvent e){ }
	public void windowActivated(WindowEvent e){ }
	public void windowDeactivated(WindowEvent e){ }
}

class Delegation extends WindowAdapter { //代理人 (但し、終了処理のみ)
	frame15 that;
	
	public  Delegation(frame15 it){//コンストラクタ
		that = it;
	}
	public void windowClosing(WindowEvent e){
		that.dispose(); //破棄
	}
}

public class frame15 extends Frame {
	
	public frame15() { //コンストラクタ
		add(new Label("クローズボックスで閉じるだけ"));
		addWindowListener(	new Delegation(this) );
		setSize(200,80);
		show();
	}
	
	public static void main(String argv[]){
		new frame15();
	}
}



[戻る]

f16---アダプターを利用する実験プログラム(frame15を、無名クラスで作成する。)

/*
    
    
   */
import java.awt.*;
import java.awt.event.*;

public class frame16 extends Frame {
	
	public frame16() { //コンストラクタ
		add(new Label("クローズボックスで閉じるだけ"));
		
		addWindowListener(    new WindowAdapter(){
			
			public void windowClosing(WindowEvent e){
				frame16.this.dispose(); //破棄
			}
		
		}    );
		
		setSize(200,80);
		show();
	}
	
	public static void main(String argv[]){
		new frame15();
	}
}


[戻る]

16---スレッドプログラミングの実験

/* 
   */
import java.applet.*;
import java.awt.*;//各種部品の使用
import java.awt.event.*;//ActionEvent用

/*import java.lang.*;	//Tread用 */

public class applet16 extends Applet implements ActionListener  ,  Runnable  {
	TextField txtCount;	//表示用
	int counter = 9;	//カウンター9から0までダウンカウント
	Button btnStop;	//ストップボタン
	
	Thread thread ; //スレッド管理用 
	
	public boolean startFlag =false;		
	public void init(){
		Button btnStart;
		setLayout(new BorderLayout());
		add(txtCount = new TextField("9",3),BorderLayout.NORTH);
		add(btnStop = new Button("STOP"));
		add(btnStart = new Button("START"),BorderLayout.SOUTH);
		
		btnStop.addActionListener(this);//ストップボタン操作登録

		btnStart.addActionListener(new ActionListener(){//スタートボタン操作登録と定義
			public void actionPerformed (ActionEvent e){
				startFlag = true;
				
				//run(); コメントを外すと、スレットでなくループが開始されるので、ストップボタンが効かなくなる!
				
				thread = new Thread(applet16.this);
				thread.start();
				
			}
		} );
	}
	
	public void run(){
		while(startFlag && counter != 0) {
			try {
				Thread.sleep(1000); //1秒間眠る
				counter--;
				txtCount.setText("" + counter);
			}
			catch(InterruptedException e){
				break;
			}
		}
	}
	public void actionPerformed (ActionEvent e){
		startFlag = false;
	}
}



[戻る]

---

---
SEO [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送