初心者向けのJava講座です。一緒にJavaを勉強しませんか?
はじめてのJava入門初心者向けのJava講座 |
イベントサンプル集
今回のイベントプログラムではアプレットの背景色をすべて白に設定しています。
それはjavaのバージョンやブラウザの環境によりデフォルトではグレーになったり白になったりしますので
ここでは、すべて白に統一させています。
もし他の色を指定したい場合は
setBackground(new Color(0, 0, 0));の数字を0〜255の間で指定してやることでいろいろな色に変更できます。パスワードで他のページへ移動
今回のイベントの概要
テキストフィールドにパスワードを入力し入力されたパスワードが正しければ他のページに間違えればエラーを出すアプレットを見ていきます。
今回は別のURLにジャンプするように設定します。
この場合はjava.net.*;パッケージをimport宣言しなければいけません。
このメソッドの役割はテキストフィールドに入力したときの文字をパスワード表示文字に設定できます。
今回使用するイベントリスナーはActionListenerです。
addActionListenerでイベントを受け取れるよう登録します。またActionListenerではイベント処理メソッドactionPerformedメソッドをオーバーライドしなければいけません。
では、サンプルプログラムで確認していきます。
サンプルプログラム(EventSample40.java)
//java.appletパッケージをimport宣言 //java.awtパッケージもimport宣言 //java.awt.eventパッケージもimport宣言
import java.applet.*; import java.awt.*; import java.awt.event.*; //ネットワーク関係のパッケージもimport宣言 import java.net.*; public class EventSample40 extends Applet implements ActionListener{ //URLクラスのインスタンスを入れる変数を用意 URL url_1; //パスワードを格納 String pass = "takeharu"; //テキストフィールドとボタンとラベルの作成 TextField tf1 = new TextField(8); Button bu = new Button("Enter"); Label la = new Label("パスワードが違います"); public void init(){ //アプレットの背景色を指定 setBackground(new Color(0x87CEEB)); //例外発生の可能性あるので例外処理を行う。
try{ //URLクラスのインスタンス作成
url_1 = new URL("http://www1.bbiq.jp/takeharu/"); }catch(MalformedURLException e){ System.out.println("URLインスタンスの作成に失敗"); } //レイアウトの指定 setLayout(null); add(tf1); add(bu); //ボタンとラベルの位置を指定 tf1.setBounds(90,40,60,20); bu.setBounds(70,80,100,20); //ボタンにActionListenerを登録します。
bu.addActionListener(this); //パスワード表示文字を設定 tf1.setEchoChar('*'); } //イベント処理メソッドをオーバーライドします。 public void actionPerformed(ActionEvent e){ //テキストフィールドの文字列を取得 String str = new String(tf1.getText()); if(e.getActionCommand() == "Enter"){ if(pass.equals(str)){ getAppletContext().showDocument(url_1); }else{ add(la);
la.setBounds(60,120,200,20);
tf1.setText("");
} } } }
プログラムをコピーする場合すべて選択をクリックしてください。
HTMLの作成(EventSample40.html)
<html> <head> <title>パスワードでURLに移動</title> </head> <body>
<div align="center"> <h3>パスワードを入力後Enterを押してください</h3> パスワードは <font size="4" color="#FF0000">takeharu</font>です。<p> テキストボックスにパスワード <font size="4"color="#FF0000">takeharu</font> と入力したり<br>他のパスワードを入力したりして動作を確認してください。<p>
<applet code="EventSample40.class" width="250" height="150"></applet> </div> </body> </html>
プログラムをコピーする場合すべて選択をクリックしてください。
Sponsored link
解説
イベント処理をおこないますのでActionListenerを実装します。
URLクラスのインスタンスを入れる変数を用意
今回パスワードをtakeharuにしています。
テキストフィールドとボタンとラベルの作成しています。public void init()メソッド内では
ここではまず背景色の設定をしています。
今回はパスワードを入力して正しければ指定のURLに移動するように設定します。
try catch文を使用しています。URLクラスのコンストラクタの引数には移動させるアドレスを記述しています。
もしも引数に指定したアドレスが見つからなかった場合などの時のために例外処理を行っています。
ちなみにこの場合の起こりうる例外はMalformedURLExceptionです。
今回はパスワード設定ですのでパスワード表示文字を設定しています。
それが
tf1.setEchoChar('*');です。
これでテキストフィールドに書かれた文字が全て*で表記されます。
ボタンにイベントをおこなえる様に登録をしています。
それが
bu.addActionListener(this);
です。
イベント処理を記述するイベント処理メソッドをオーバーライドしています。
今回ActionListenerを実装しているのでオーバーライドするメソッドは
actionPerformedメソッドだけです。
actionPerformedメソッド内の記述ですがそこに実際イベントの処理内容を記述します。
actionPerformedメソッド内の処理ですがString str = new String(tf1.getText()); のgetText()でテキストフィールドで記述された文字列を取得しています。
if文の中ですが今回はif文のネストをしています。
最初のif文はこのようになっています。
if(e.getActionCommand() == "Enter")は
getActionCommand()メソッドを使っています。
このメソッドはアクションに関連したコマンド文字列を返します。
つまり今回はボタンのラベルの文字列を返しています。
つまりラベルの文字がEnterのボタンを押されたらif文の処理をしなさいという意味になります。
その次のif文ですがpass.equals(str))ですが
パスワードとテキストフィールドに入力された文字列を比較しています。
つまりここの部分がパスワードが正しければif文の中の処理をさせています。したがってif文内の処理
getAppletContext().showDocument(url_1);が
URLへジャンプする処理を行っています。ここではurl_1へ移動させています。
else内はパスワードが違えばラベルにパスワードが違いますとadd()メソッドを使い追加しています。
それと同時にテキストフィールド内の文字を空白にしています。
実際にイベントの処理を確認しましょう
ページのトップへ戻る