[戻る]

---各種文字列のコードを確認する。

//各種文字列のコードを確認する。最初はJavaのデフォルト
/* 
   */

import java.awt.*;
import java.awt.event.*;//ActionListener利用
import java.applet.*;
import java.net.*; //URL使用のため
import java.io.*;  //InputStreamなどのため

public class applet50 extends Applet implements ActionListener,ItemListener {
	TextField  txt;//入力文字列用
	Choice cho = new Choice();	//選択メニュー管理
	String	item[] = {"Shift_JIS","ISO-8859-1","ISO-2022-JP","JIS0201","EUC-JP","UnicodeBigUnmarked", "UTF-16","UTF-16BE","UTF-16LE","UTF-8"};
	Button btn;	//変換ボタン用
	Label lbl;	//ラベル管理用
	String selectItem = null;
	
	//JavaのStringは、Unicodeで管理されている。つまり1文字2Byte
	//ソースプログラムから翻訳の時に、Unicodeへ変換される。また、Stringコンストラクタでbyte配列を使う時に変換される。
	//逆に、文字列ストリーム出力時に、JVMのシステムが動いているSystemに合う文字列へ変換される。StringのgetByteメソッドで指定コード並びへ変換可能
	
	//先頭の文字をコードで表す文字列に変換する。その場合のエンコード方法は、selectItemに従う。
	String getCodeString(String s) throws Exception	{
		int len;		//全体の長さ
		String first="",second="";
		byte bs[];
		try {
			if(selectItem == null){
				bs = s.getBytes();	//デフォルトで、使用したいるOSに依存
			} else {
				bs = s.getBytes(selectItem);//指定のcharset文字列でデコードされる。
			}
			first = "00" + Integer.toHexString(bs[0]);
			len  = first.length();
			first = first.substring(len-2,len);
			if(bs.length >= 2){ //2byteコード
				second = "00" + Integer.toHexString(bs[1]);
				len  = second.length();
				second = second.substring(len-2,len);
				return  "[" + first + ":" + second + "]";
			} else { //1byteコード
				return  "[" + first + "]";
			}
		}
		catch(Exception e){
			throw e;
		}
	}
	
	void 文字列をコード列へ変換(){
		try {
			String str = txt.getText();
			String s = "";
			int len = str.length();
			for(int i = 0; i < len; i++){
				s += getCodeString(str.substring(i,i+1));
			}
			lbl.setText(s);
		}
		catch(Exception e){
			lbl.setText(e.toString());
		}
	}
	
	public void init(){//アプレットがロードされた時に呼ばれる。
		setLayout(new BorderLayout());
		add(txt = new TextField("abcABC123あいう",50),BorderLayout.NORTH);
		for(int i = 0;i < item.length; i++){
			cho.add(item[i]);//選択項目文字列を、配列より追加
		}
		add(cho,BorderLayout.CENTER);
		cho.addItemListener(this);//リスナーを登録
		add(btn = new Button("先頭文字のコード表示"),BorderLayout.EAST);
		add(lbl = new Label("     "),BorderLayout.SOUTH);	//ラベルを生成

		btn.addActionListener(this);
		文字列をコード列へ変換();
	}
	public void actionPerformed(ActionEvent e){ //送信ボタン処理
		文字列をコード列へ変換();
	}
	
	public void itemStateChanged(ItemEvent e){//選択項目変更
		//選択項目の文字列取得
		selectItem = cho.getSelectedItem();
	}

}


[戻る]

--farame51 URL(Uniform Resource Locator)クラスを調べる。

//これは、World Wide Web の参照位置を表現するクラスなので、指定のHTMLの情報を取得する時に使える。
//シフトJISコード Shift_JIS 
//EUCコード EUC-JP 
//JISコード ISO2022-JP 
//Classオブジェクトを獲得する方法は次の3通り!
//http://www.asahi-net.or.jp/~dp8t-asm/java/tips/HowToGetClass.html
//アプレットでat java.security.AccessController.checkPermission(AccessController.java:401)
//ObjectのgetClassメソッド 
//ClassのforNameメソッド 
//クラス名.class 

/* 
   */

import java.awt.*;
import java.awt.event.*;//WindowEvent利用
//import java.applet.*;
import java.net.*; //URL使用のため
import java.io.*;  //InputStreamなどのため

public class frame51 extends Frame {
	TextArea txt;	//各種情報を表示させるのに使う。
	URL url;//取得リソースを管理させるurl

	public static void main(String argv[]){
		new frame51();
	}
	
	public frame51(){//コンストラクタ
		setTitle("指定のリソースを取得");
		init();
		setSize(400,200);
		addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e){
				frame51.this.dispose(); //破棄
			}
		});
		show();
	}

	public void init() {
		BufferedReader reader; //文字、配列、行をバッファリング読み取り用
		
		setLayout(new BorderLayout());
		add(txt = new TextArea(),BorderLayout.CENTER);//デフォルトの中央(BorderLayout.CENTER)に設定
		
		try {
			//url = new URL("http://yuu7777.fc2web.com/applet/javatext.html");//appletの時、このクラスをロードした以外のサーバーから取得するのは不可
			//url = new URL(this.getDocumentBase(),"javatext.html");//appletなら可能
			//url = frame51.class.getResource("javatext.html");
			url = this.getClass().getResource("javatext.html");

		}
		//catch(MalformedURLException e){
		catch(Exception e){
			txt.append("文字列に指定されたプロトコルが未知である!"); //エラーメッセージ
			return;
		}
		try {
			InputStream is = url.openStream();//バイト入力ストリーム;
			InputStreamReader isr = new InputStreamReader(is,"Shift_JIS"); //バイトストリームから文字ストリーム
			reader = new BufferedReader(isr);//バッファリング読み取り用
			while(reader.ready()){ //読み取り可能の間
				String s = reader.readLine();//一行読み取る。
				txt.append(s+"\n");
			}
		}
		catch(IOException e){
			txt.append("入出力例外"); //エラーメッセージ
			return;
		}
	}
}

[戻る]

---applet52 サウンドを鳴らす実験


/*
   */









import java.awt.*;
import java.awt.event.*;//ActionListener利用
import java.applet.*;
import java.net.*; //URL使用のため

public class applet52 extends Applet implements ActionListener {
	Button btn0,btn1,btn2,btn3,btn4,btn5;			//ボタン
	public void init(){//アプレットがロードされた時に呼ばれる。
		add(btn0 = new Button("getDocumentBase()利用-相対パスtest.wavを取得して鳴らす"));
		add(btn1 = new Button("getDocumentBase()利用-相対パスtest.auを取得して鳴らす"));
		add(btn2 = new Button("getDocumentBase()利用-絶対パスtest.auを取得して鳴らす"));
		add(btn3 = new Button("絶対パス接生成URLからgetAudioClipでtest.auを取得して鳴らす"));
		add(btn4 = new Button("絶対パス接生成URLからgetContentでtest.auを取得して鳴らす"));
		add(btn5 = new Button("getDocumentBase()利用-相対パスtest.midを取得して鳴らす"));
		btn0.addActionListener(this);
		btn1.addActionListener(this);
		btn2.addActionListener(this);
		btn3.addActionListener(this);
		btn4.addActionListener(this);
		btn5.addActionListener(this);
	}
	public void actionPerformed(ActionEvent e){ //ボタン処理
		URL url;
		AudioClip audioClip = null;	
		try {					
			Object btn = e.getSource();	//イベント発生オブジェクト取得
			if(btn == btn0){
				url = new URL(getDocumentBase(), "test.wav");
				audioClip = this.getAudioClip(url);
			} else if(btn == btn1){
				url = new URL(getDocumentBase(), "././test.au");
				audioClip = this.getAudioClip(url);
			} else if(btn == btn2){
				url = new URL(getDocumentBase(),"http://yuu7777.fc2web.com/applet/test.au");
				audioClip = this.getAudioClip(url);
			} else if(btn == btn3){
			 	url = new java.net.URL("http://yuu7777.fc2web.com/applet/test.au");
				audioClip = this.getAudioClip(url);;
			} else if(btn == btn4){
			 	url = new java.net.URL("http://yuu7777.fc2web.com/applet/test.au");
				audioClip = (AudioClip) url.getContent();
			} else if(btn == btn5){
			 	url = new java.net.URL(getDocumentBase(), "test.mid");
				audioClip = (AudioClip) url.getContent();
			}
			if(audioClip != null) {
				audioClip.play();
				this.showStatus("audioClipを再生");
			} else {
				this.showStatus("audioClipがnull: 取得失敗");
			}
		} 
		catch (MalformedURLException e2) {
			this.showStatus(e2.toString());;
		}
		catch (java.io.IOException e2) {
			this.showStatus(e2.toString());;
		}
		catch (Exception e2) {
			this.showStatus(e2.toString());;
		}
	}
}




[戻る]

--applet53 アプレットからから違うHTMLへジャンプ


/*
   */

import java.awt.*;
import java.awt.event.*;//ActionListener利用
import java.applet.*;
import java.net.*; //URL使用のため

public class applet53 extends Applet implements ActionListener {
	Button btn1,btn2;			//ボタン
	public void init(){//アプレットがロードされた時に呼ばれる。
		add(btn1 = new Button("相対パス指定で、javatext.htmlへジャンプ"));
		add(btn2 = new Button("http://www001.upp.so-net.ne.jp/yuu/へジャンプ"));
		btn1.addActionListener(this);
		btn2.addActionListener(this);
	}
	public void actionPerformed(ActionEvent e){ //ボタン処理
		URL url;
		try {					
			Object btn = e.getSource();	//イベント発生オブジェクト取得
			if(btn == btn1){
				url = new URL(getDocumentBase(), "javatext.html");
			} else {
				url = new URL(getDocumentBase(), "http://www001.upp.so-net.ne.jp/yuu/");
			}
		} catch (MalformedURLException exc) {
			url = null;
		}
		getAppletContext().showDocument(url);	// urlのページに移動する(ページを開く) !

        
	}
}

[戻る]

--applet54HTMLの情報を取得し、ボタンでそこに記述されるフレームをロードし、実行させる。

//HTMLの情報を取得し、ボタンでそこに記述されるフレームをロードし、実行させる。

/*

   */
//sun.applet.AppletClassLoader アプリケーションクラスのロードには非公開の AppClassLoader が使われている
import java.awt.*;
import java.awt.event.*;//ActionListener利用
import java.applet.*;
import java.net.*; //URL使用のため

public class applet54 extends Applet implements ActionListener {
	Button btn;			//ボタン
	String parm;
	
	public void init(){//アプレットがロードされた時に呼ばれる。
		parm = getParameter("applet54");
		add(btn = new Button(parm + "の実行"));
		btn.addActionListener(this);
	}
	public void actionPerformed(ActionEvent e){ //ボタン処理
		java.lang.reflect.Method methods[];
		java.lang.reflect.Method main_method  = null;
		java.lang.reflect.Constructor constractors[];
		try {
			URL urls[] = new URL[1];
			URL url = getDocumentBase(); //このAppletの絶対 URL 
			urls[0] = url;
			//以下は試しで、appletでは不可
			//URLClassLoader urlLoader = new URLClassLoader(urls);
			//Class cls = loader.loadClass("frame54");

			Class cls =  Class.forName(parm);

			constractors = cls.getConstructors();
			constractors[0].newInstance(null);//ここで生成
/*
			methods = cls.getDeclaredMethods();
			for(int i = 0; i < methods.length ; i++){
				if(methods[i].getName().equals("main")) {
					main_method = methods[i];
				}
			}
			Object args[] = new Object[1];
			args[0] = null;
			main_method.invoke(null,args);	//mian起動
*/
			
		} catch (Exception err) {
			showStatus("Error " + err.toString());
		}
	}
}



[戻る]

---

/* 
   */ 
  
import javax.sound.midi.*;
import java.awt.*;
import java.applet.Applet;
import java.awt.event.*;

public class AppletPiano extends Applet implements ActionListener {
	String code[] = {"C","C#","D","D#","E","F","F#","G","G#","A","A#","B", "C" };
	Button btns[] = new Button[code.length];
	int noteNumber = 60;//音階(中央のドの音で0から127)
	int velocity = 127;//キーダウン速度は通常
	Synthesizer synth;
	MidiChannel chan = null;
	TextField txtVelocity = new TextField("" + velocity);

	public void init() {
		setBackground(Color.white);
		setLayout(new GridLayout(1,code.length + 1)); // 1行,length列
		for(int i = 0; i < code.length; i++){
			btns[i] = new Button(code[i]);
			add( btns[i] );
			btns[i].addActionListener(this);
		}
		add(txtVelocity);
		try {
			// シンセサイザーを取得
			synth = MidiSystem.getSynthesizer();
			// MIDIチャンネルリストを取得
			MidiChannel chans[] = synth.getChannels();
			// シンセサイザーを開く
			synth.open();
			chan = chans[4];//ピアノのチャンネル
		}
		catch  (MidiUnavailableException e) {
			showStatus(e.toString());
			chan = null;
		}
	}

	public void actionPerformed(ActionEvent e){
		Button btn = (Button)e.getSource();
		velocity = Integer.parseInt( txtVelocity.getText() );
		int i = 0;
		for(i = 0; i < btns.length; i++){
			if(btn == btns[i]) break; //クリックしたボタンを配列から探す。
		}
		if( i != btns.length){
			noteNumber = 60 + i;
		}
		if (chan != null) {
			chan.setMute(false);
			chan.noteOff(noteNumber); // 前回鳴らしていた音を消す
			chan.noteOn(noteNumber, velocity); // サイズで指定された音を出力
			//以上は、appletviewer を使うと鳴るが、html内のアプレットでは音が鳴らなかった。
			
			showStatus("note:" + noteNumber + ", velocity:" + velocity );
		} else {
			showStatus("MidiChannel null");
		}
	}
}


[戻る]

---

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