[戻る]

20-----各種部品(component コンポーネント)を作成し、よく使う設定を行う。

/* 
   */
import java.applet.*;
import java.awt.*;//各種部品

public class applet20 extends Applet  {
	
	Label lbl;	//ラベル管理用
	Button btn;	//ボタン管理用	
	TextField txt1; //1行テキスト管理用
	TextArea  txt5; //5行のテキストアリア管理
	List lst3;	//3行リスト管理
	Checkbox chk;	//チェックボックス管理
	Choice cho;	//選択メニュー管理
	Scrollbar scr;	//スクロールバー管理
	Canvas cnv;	//キャンバス管理

	
	public void init(){//アプレットがロードされた時に呼ばれる。
		this.setBackground(new Color(0,255,255));

		lbl = new Label(" ");	//ラベルを生成
		this.add(lbl);			//追加
		
		btn = new Button(" ");	//ボタンを生成
		this.add(btn);			//追加
		
		txt1 = new TextField(" ",20); //20桁,1行テキスト生成
		this.add(txt1);				//追加
		
		txt5 = new TextArea("ABCDEFGHIJKLMN ",5,10); //5行、10桁で生成
		this.add(txt5);		//追加
		
		lst3 = new List(3);//3行表示用
		this.add(lst3);		//追加

		chk = new Checkbox("chk"); //チェックボックス生成
		this.add(chk);		//追加
		
		cho = new Choice();//"op1");	//選択メニュー生成
		this.add(cho);		//追加
		
		scr = new Scrollbar(Scrollbar.HORIZONTAL, 0, 60, 0, 300);
		this.add(scr);		//追加
		
		cnv = new Canvas();		//キャンバス生成
		this.add(cnv);		//追加
		
		//生成後のアクセス例
		lbl.setText("ラベル");	//ラベル表示変更
		btn.setLabel("ボタン");	//ボタン表示変更
		txt1.setText("テキストです");	//テキスフィールドト表示変更
		txt5.append("12\n    345\n6"); 	//テキストエリア末尾に追加
		lst3.add("1番目");		//リストに追加
		lst3.add("2番目");		//リストに追加
		chk.setState(true);		//チェックボックスにチェックを付ける
		cho.add("op1");			//選択メニュー
		cho.add("op2");
		scr.setValue(150);		//スクロールバー設定値
		cnv.setSize(50,5);	//サイズ指定
		cnv.setBackground(new Color(255,0,0));
	}
}


[戻る]

21 背景色を変更する3つのボタン

/* 
   */
import java.applet.*;
import java.awt.*;//各種部品
import java.awt.event.*; //ActionListener利用のため

public class applet21 extends Applet  {
	applet21 that; //自身を記憶
	
	public void init(){//アプレットがロードされた時に呼ばれる。
		that = this; //自身をメモ
		Button btn_red, btn_green, btn_blue;//ボタン(メソッド内ローカル変数)

		add( btn_red = new Button("赤") ) ;//生成しながら追加
		btn_red.addActionListener(new  ActionListener() {
			public void actionPerformed(ActionEvent e ){
				that.setBackground(new Color(255,0,0));
				that.repaint();
				//^^thisは使えないことに注意(ここはActionListenerの派生さた名前なしのクラス内)
				// しかし、インナークラスには違いなくこの指定は可能⇒applet21.this.repaint();
			}
		});
		
		add( btn_green = new Button("緑") ) ;//生成しながら追加
		btn_green.addActionListener(new  ActionListener() {//無名クラス定義と生成
			public void actionPerformed(ActionEvent e ){
				that.setBackground(new Color(0,255,0));
				that.repaint();
			}
		});
		
		add( btn_blue = new Button("青") ) ;//生成しながら追加
		btn_blue.addActionListener(new  ActionListener() {//無名クラス定義と生成
			public void actionPerformed(ActionEvent e ){
				that.setBackground(new Color(0,0,255));
				that.repaint();
			}
		});
	}
}

[戻る]

22 任意個所のクリックで、ポップアップメニューを出し、それで背景色を変更する

//PopupMenuクラスに、3つのメニュー項目(MenuItemクラス)を管理させる。
//ポップアップメニュー生成手続きは次のようになる。
//●メニュー構成構築 
// 1.PopupMenuオブジェクトを用意して、表示したいコンポーネント(この例ではアプレット)に追加登録
// 2.メニュー項目(MenuItem)を用意
// 3.PopupMenuオブジェクトへaddメソッドで、メニュー項目
// 4.希望の項目数だけ2と3を繰り返す。
// 以上で準備完了
//●PopupMenuオブジェクトに対し、1.で登録したコンポーネントと座標を指定してshowメソッドで表示
/* 
   */

import java.applet.*;
import java.awt.*;//各種部品
import java.awt.event.*; //ActionListener利用のため

public class applet22 extends Applet implements MouseListener{
	PopupMenu popup;//ポップアップメニュー

	public void init(){//アプレットがロードされた時に呼ばれる。	
			popup = new PopupMenu("色変更");
			add(popup); 	//ポップアップメニューをアプレットに登録
			
			MenuItem mnu_red, mnu_green,mnu_blue;//メニュー項目(ローカル変数)
			
			popup.add( mnu_red= new MenuItem("赤") );//生成しながら追加
			mnu_red.addActionListener(new ActionListener(){
				public void actionPerformed(ActionEvent e) {
					applet22.this.setBackground(new Color(255,200,200));
				}
			});
			
			popup.add( mnu_green = new MenuItem("緑") );//生成しながら追加
			mnu_green.addActionListener(new ActionListener(){
				public void actionPerformed(ActionEvent e) {
					applet22.this.setBackground(new Color(200,255,200));
				}
			});
			
			popup.add( mnu_blue = new MenuItem("青") );//生成しながら追加
			mnu_blue.addActionListener(new ActionListener(){
				public void actionPerformed(ActionEvent e) {
					applet22.this.setBackground(new Color(200,200,255));
				}
			});

			this.addMouseListener(this);//マウスイベント処理と登録
	}

	
	//public void actionPerformed(ActionEvent e){  }//メニュー選択時のイベント処理 
	public void mouseClicked(MouseEvent e){ }//クリック
	public void mouseEntered(MouseEvent e){ }//入った?
	public void mouseExited(MouseEvent e){ }//出た?
	public void mouseReleased(MouseEvent e){ }//離された
	public void mousePressed(MouseEvent e){ //押した?
		int x = e.getX();	//マウスク押された位置を取得
		int y = e.getY();
		popup.show(this,x,y); //メニュー表示
	}
}

[戻る]

23 チェックボックスで背景色を変更する。その1 チェックグループボックスを使う

//チェックグループボックスを使うと、グループ内のどれか1つしか選択できないボタンになる。

/* 
   */

import java.applet.*;
import java.awt.*;//各種部品
import java.awt.event.*; //ActionListener利用のため

public class applet23 extends Applet {
	public void init(){//アプレットがロードされた時に呼ばれる。
		Checkbox box_red, box_green, box_blue;//ローカル管理変数
		CheckboxGroup cg = new CheckboxGroup();	//グループ化用オブジェクト生成
			
		add( box_red = new Checkbox("赤",cg, true));//生成しながら追加
		box_red.addItemListener(new ItemListener() {
		       	public void itemStateChanged(ItemEvent e) {
		               	setBackground(new Color(255,200,200));
				showStatus(e.toString());
		       	}
		});
			 
		add( box_green = new Checkbox("緑",cg, false));//生成しながら追加
		box_green.addItemListener(new ItemListener() {
		       	public void itemStateChanged(ItemEvent e) {
		               	setBackground(new Color(200,255,200));
		       	}
		});
			
		add( box_blue = new Checkbox("青",cg, false));//生成しながら追加
		box_blue.addItemListener(new ItemListener() {
			public void itemStateChanged(ItemEvent e) {
				setBackground(new Color(200,200,255));
			}
		});

		setBackground(new Color(255,200,200));	//⇒先頭に移動すると、ボックス色が変化
	}

}


[戻る]

24 チェックボックスで背景色を変更する。その2(チェック個所の合成色を作る)

// Checkboxの生成に、CheckboxGroupを指定しなければ、個別チェック操作ができる。
/* 
   */

import java.applet.*;
import java.awt.*;//各種部品
import java.awt.event.*; //ActionListener利用のため

public class applet24 extends Applet implements ItemListener{
	Checkbox box_red, box_green, box_blue;

	public void init(){//アプレットがロードされた時に呼ばれる。
		//CheckboxGroup cg = new CheckboxGroup();
			
		add( box_red = new Checkbox("赤",true));//生成しながら追加
		box_red.addItemListener(this);
			 
		add( box_green = new Checkbox("緑",true));//生成しながら追加
		box_green.addItemListener(this);
		
		add( box_blue = new Checkbox("青",true));//生成しながら追加
		box_blue.addItemListener(this);
	}

	public void itemStateChanged(ItemEvent e) {
		int red = 200,green = 200, blue = 200;
		showStatus(e.toString());
		if(box_red.getState())	//チェックされているか?
			red += 55;
		if(box_green.getState())
			green += 55;
		if(box_blue.getState())
			blue += 55;
		setBackground(new Color(red,green,blue));
	}
}

[戻る]

25 スクロールバーの設定値を表示するプログラム

//テキストフィールドのフォーカスの取得を不可にし、キーでスクロールしやすくする。
/* 
   */
import java.applet.*;
import java.awt.*;//各種部品
import java.awt.event.*; //AdjustmentListener利用のため

public class applet25 extends Applet implements AdjustmentListener{
	Label l;
	Component a;
	TextComponent b;//-------------------------------------------------
	
	TextArea t_debug = new TextArea(5,25);	//デバック用
	TextField 表示対象;
	//Label 表示対象;
	Scrollbar bar;				//スクロールバー
	int val = 120;				//スクロールバー初期設定値
	final int visible = 10;		//つまみ(サム:thumb)のサイズ
	final int max = 255+visible;//スクロールバー最大値(最大値を255にしたい)
	final int min = 0;			//スクロールバー最小値
	
	public void init(){//アプレットがロードされた時に呼ばれる。
		setBackground(new Color(0,200,200));
		表示対象 = new TextField(String.valueOf(val));
		//表示対象 = new Label();
		表示対象.setFocusable(false);//テキストフォーカスを得られないようにする。
		add(表示対象);

		bar = new Scrollbar(Scrollbar.HORIZONTAL, val, visible, min, max);
		add(bar);
		bar.setSize(200,50);
			
		add(t_debug);//メッセージ確認用

		bar.setBlockIncrement(20);//□---◆-----□の --をクリックした時の増減
		bar.setUnitIncrement(5);//□---◆-----□の □をクリックした時やキー操作の増減
		bar.requestFocusInWindow();//フォーカス設定
		
		//スクロールを変化させた時にthis.adjustmentValueChangedに任せる。
		bar.addAdjustmentListener(this);
	}
	
	
	public void adjustmentValueChanged(AdjustmentEvent e){
		val = bar.getValue();	//設定値取得
		表示対象.setText(String.valueOf(val));
		
		t_debug.append(val+"\n");//デバック用
	}
}

[戻る]

26 テキストフィールドでEnterキーを押すと、内容がリストに追加される。

// これは、KeyListenerを実装する必要がある。
// また、リストボックスのダブルクリックでテキストフィールドに設定する。
// これは、ボタンアクションと同じでActionListenerを実装する。

/* 
   */

import java.applet.*;
import java.awt.*;//各種部品
import java.awt.event.*; //KeyListener利用のため

public class applet26 extends Applet implements KeyListener ,ActionListener {
	TextField txt = new TextField (20);
	List list = new List(7);	//7行の可視範囲
	
	public void init(){//アプレットがロードされた時に呼ばれる。
		setBackground(new Color(0,200,200));
		add(txt);
		add(list);
			
		txt.addKeyListener(this);	//キーイベント処理の登録
		list.addActionListener(this);//リストのダブルクリックやEnterキー処理の登録
    }
	
	public void keyTyped(KeyEvent e){// キーを入力
		this.showStatus(e.toString());
	}
	public void keyPressed(KeyEvent e) { //キーを離したとき
		this.showStatus(e.toString());
		if(e.getKeyCode() == KeyEvent.VK_ENTER){
			list.add(txt.getText());//リストへtxt文字列を追加し、
			txt.setText("");	//テキストフィールドは空へ
		}
	}
	public void keyReleased(KeyEvent e) {//キーを押しているとき
		this.showStatus(e.toString());
	}
	
	public void actionPerformed(ActionEvent e){
		String s = list.getSelectedItem(); //選択中のリスト項目
		if(s != null){// 選択項目が1つだけ存在するか?
			txt.setText(s);
		}
	}
}


[戻る]

27---選択メニューで選ばれた内容を、テキストアリアの選択範囲に設定する(置き換える)。

//ここで言う選択範囲は、テキストをドラックなどで反転させた範囲を言うが、
//選択範囲が無い場合は、きー入力カーソル位置への挿入になる。

/*
*/

import java.applet.*;
import java.awt.*;//各種部品
import java.awt.event.*; //ItemSelectable利用のため

public class applet27 extends Applet implements ItemListener  {
	Choice cho = new Choice();	//選択メニュー管理
	TextArea txt = new TextArea (10,40);
	String	item[] = { "background-color:red;","color:blue;",
		"text-align:right;","text-indent:5%",""
	};
	
	public void init(){//アプレットがロードされた時に呼ばれる。
		setBackground(new Color(0,200,200));
		for(int i = 0;i < item.length; i++){
			cho.add(item[i]);//選択項目文字列を、配列より追加
		}
		add(cho);
		add(txt);
		cho.addItemListener(this);//リスナーを登録
    }
	
	public void itemStateChanged(ItemEvent e){//選択項目変更
		//テキストエリア選択した範囲を取得
		int selStart = txt.getSelectionStart();  //TextComponentの継承メソッド
		int selEnd = txt.getSelectionEnd();

		//選択項目の文字列取得
		String s = cho.getSelectedItem();
		
		//テキストエリアの選択部分を置き換え
		txt.replaceRange(s,selStart,selEnd);
		showStatus(selStart + "から" + selEnd);//確認用
	}
}


[戻る]

28---フレームは、アプレットでも利用できる?(アプレットからフレームを呼び出す)

// フレームのクローズボックスをプログラミングするには、WindowListenerをimplementsして、
// windowClosingにプログラムする。
// @をコメントにすると、フレーム生成側(applet28)のfrmフィールドをnullに出来ないため、
// APFrame28を閉じた後、再びフレーム生成ができなくなる。
// また、A、Bの行をコメントにして、ifを無くすと、APFrame28をいくつでも生成できる。

/*>
*/

import java.applet.*;
import java.awt.*;//各種部品
import java.awt.event.*; //WindowListener利用のため

class APFrame28 extends Frame implements WindowListener{ //フレーム
	applet28 that;
	String msg = "";
	public APFrame28(applet28 it){//コンストラクタ
		that = it;
		this.setLayout(new FlowLayout()); //デフォルトのBorderLayoutを変更
		this.setSize(200,150);
		this.add(new Label("人付き合いがうまいというのは、人を許せるということだ。 ロバート・フロストより"));
		this.addWindowListener(this);
	}
	public void windowOpened(WindowEvent e) {	//ウィンドウが最初に可視になった
		msg = msg + "/最初に見えるようになった";
		that.showStatus(msg);
	}
	
	public void windowClosed(WindowEvent e) { //ウィンドウがクローズされた
		msg = msg + "/クローズされた";
		that.showStatus(msg);
	}
	
	public void windowClosing(WindowEvent e) {//ユーザが、ステムメニュー(クローズボックスなど)でウィンドウを閉じた 
		msg = msg + "/閉じる";
		that.showStatus(msg);
		that.frm = null; //@
		this.dispose();	//すべてのネイティブスクリーンリソースを解放(ウインドウが無くなる)
	}
	public void windowIconified(WindowEvent e) {//ウィンドウが最小化された
		msg = msg + "/最小化";
		that.showStatus(msg);
	}
	public void windowDeiconified(WindowEvent e) {//他の状態から通常の状態になった
		msg = msg + "/通常の状態へ戻った";
		that.showStatus(msg);
	}
	public void windowActivated(WindowEvent e) {//Window がアクティブ化 
		msg = msg + "/アクティブ化";
		that.showStatus(msg);
	}
	public void windowDeactivated(WindowEvent e) { //Window がアクティブでなくなった 
		msg = msg + "/アクティブでなくなった";
		that.showStatus(msg);
	}
}	

public class applet28 extends Applet implements ActionListener  {

	Frame frm;	//フレーム管理用
	
	public void init(){//アプレットがロードされた時に呼ばれる。
		Button btn = new Button("フレーム生成");
		setLayout(new BorderLayout());//デフォルトのFlowLayoutを変更
		add(btn);// ボタンを追加
		btn.addActionListener(this);//リスナーを登録
    }
	
	public void actionPerformed(ActionEvent e){
		if(frm == null){ //A
			frm = new APFrame28(this);
			frm.show();
		}//B
	}	
}


[戻る]

281 アプレットとJavaの通常アプリケーション両方で扱えるクラスframe281を作り、アプレットから呼び出す。

//フレーム部分のソース----------------------------------------------------------------------------
import java.awt.*;
import java.applet.*;
import java.awt.event.*;

public class frame281 extends Frame  implements WindowListener{
	
	public frame281(){ //コンストラクタ
		setSize(400,200);//フレームサイズ変更
		TextArea txt = new TextArea("「いわゆる頭のいい人は、足の早い旅人のようなものである。\n"+
					" 人より先に人のまだ行かない所へ行き着くこともできるかわりに、\n" +
					" 途中の道端あるいはちょっとした脇道にある肝心なものを\n" +
					" 見落とす恐れがある」\n\n" +
					" \t\t寺田寅彦より",0,0,TextArea.SCROLLBARS_NONE);//スクロールバーなし。桁、行は無視される
		txt.setBackground(new Color(0,0,0));
		txt.setForeground(new Color(255,255,255));
		txt.setEnabled(false); //@編集不可 (TextAreaの親の親のComponentクラスが持つメソッド)
		add(txt);
		show();	//表示
		setLocation(100,100);//位置変更
		addWindowListener(this);//ウィンドウイベント処理インスタンス登録
	}
	public void windowOpened(WindowEvent e) {}	//最初に起動する
	public void windowClosed(WindowEvent e) {} //クローズされた
	public void windowClosing(WindowEvent e) {
		this.dispose();	//クローズのプログラム 
	}
	public void windowIconified(WindowEvent e) {}//最小化
	public void windowDeiconified(WindowEvent e) {}//通常へ戻った
	public void windowActivated(WindowEvent e) {}//アクティブ化 
	public void windowDeactivated(WindowEvent e) {}//アクティブでなくなった 
}
// 既存のframe281クラスのフレームを呼び出すアプレット--------------------------------------------------
/*
*/

import java.applet.*;
import java.awt.*;//各種部品
import java.awt.event.*; //WindowListener利用のため

public class applet281 extends Applet implements ActionListener  {

	public void init(){//アプレットがロードされた時に呼ばれる。
		Button btn = new Button("フレーム生成");
		setLayout(new BorderLayout());//デフォルトのFlowLayoutを変更
		add(btn);// ボタンを追加
		btn.addActionListener(this);//リスナーを登録
	}
	
	public void actionPerformed(ActionEvent e){
		new frame281();
	}
}

[戻る]

282 メニュー付き、フレーム部分のソース

//メニュー付き、フレーム部分のソース---------------------------------------------
import java.awt.*;
import java.awt.event.*;

public class frame282 extends Frame  {
	TextArea text;
	MenuBar mnuBar;	//メニューバー管理用
	Menu	menu1,menu12,menu2;	//メニュー管理用
	MenuItem item11, item121, itemExit;		//メニュー項目
	public frame282(){ //コンストラクタ
		setTitle("メニュー付きフレーム");
		setSize(640,180);//フレームサイズ変更
		setLocation(100,100);//位置変更
		add(text = new TextArea());
		
		//メニュー追加関連
		setMenuBar(mnuBar = new MenuBar()); //メニューバー追加@
		mnuBar.add(menu1 = new Menu("メニュー1"));//トップメニュー追加
		mnuBar.add(menu2 = new Menu("メニュー2"));//トップメニュー追加
		menu1.add(item11 = new MenuItem("項目11"));//項目追加
		menu1.add(menu12 = new Menu("メニュー12"));//メニュー追加
		menu12.add(item121 = new MenuItem("項目121"));//項目追加
		menu1.add(new MenuItem("項目13"));//項目追加
		menu2.add(new MenuItem("項目21"));//項目追加
		
		MenuShortcut ms = new MenuShortcut(KeyEvent.VK_Q, false); 
		menu1.add(itemExit =new MenuItem("終了(Quit)",ms));//ショートカット付き項目追加

		item11.addActionListener(new ActionListener(){//メニュー実行用オブジェクト生成登録
			public void actionPerformed(ActionEvent e){
				frame282.this.text.append(e.toString() + "\n");
			}
		});
		item121.addActionListener(new ActionListener(){//メニュー実行用オブジェクト生成登録
			public void actionPerformed(ActionEvent e){
				frame282.this.text.append(e.toString() + "\n");
			}
		});
		
		itemExit.addActionListener(new ActionListener(){//メニュー実行用オブジェクト生成登録
			public void actionPerformed(ActionEvent e){
				frame282.this.dispose();	//クローズのプログラム 
			}
		});
		
		show();	//表示
	}
}
// 既存のframe282クラスのメニュー付きフレームを呼び出すアプレット--------------------------------------------------
/*
*/

import java.applet.*;
import java.awt.*;//各種部品
import java.awt.event.*; //ActionListener利用のため

public class applet282 extends Applet implements ActionListener  {

	public void init(){//アプレットがロードされた時に呼ばれる。
		Button btn = new Button("フレーム生成");
		setLayout(new BorderLayout());//デフォルトのFlowLayoutを変更
		add(btn);// ボタンを追加
		btn.addActionListener(this);//リスナーを登録
	}
	
	public void actionPerformed(ActionEvent e){
		new frame282();
	}
}

[戻る]

29---- IPアドレス表示用パネル(IpPanel)を別途に作っておいて、そのパネルを利用する。

//IPアドレスとホストネームを表示するパネル----------------------------------------------------------
import java.awt.*; 		//TextFieldなど利用のため
import java.net.*;//InetAddress利用のため
import java.lang.*;		//Exception利用のため
public class IpPanel extends Panel {
	InetAddress i_adr;
	public TextField ip;
	public TextField hostName;
	public IpPanel(){
		add(new Label(" IP Address:"));
		ip = new TextField("xxx.xxx.xxx.xxx",15);
		add(ip);	//追加
		add(new Label(" Host Name:"));
		hostName = new TextField(30);
		add(hostName);	//追加
		hostName.setEnabled(false);
		setSize(640,45);
	}
	
	public void validate(){
		if(i_adr != null){
			try {
				ip.setText(i_adr.getHostAddress());
				hostName.setText(i_adr.getHostName());
				ip.setEnabled(false);
			}
			catch (Exception e){
				hostName.setText(e.toString());
			}
		}
		super.validate();//親へも再配置調整指示
	}
	
	public void setAddress(InetAddress ip){
		i_adr = ip;
		validate();//再配置調整の指示
	}
}

//-----------------------------------------------------------------------
//●IPアドレス表示用パネル(IpPanel)を別途に作っておいて、そのパネルを利用する。 /* */ import java.applet.*; import java.awt.*; import java.net.*;//InetAddress利用のため public class applet29 extends Applet { public void init(){//アプレットがロードされた時に呼ばれる。 setLayout(new BorderLayout()); IpPanel panel = new IpPanel(); add(panel);//centerへ配置される。 try { InetAddress local = InetAddress.getLocalHost(); panel.setAddress(local); } catch (UnknownHostException e){ panel.hostName.setText(e.toString()); } } }

[戻る]

---

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