[戻る]
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;
}
}
[戻る]
---
---