| [挿入]ボタン・・・挿入文字列Boxに入力した文字列を,カーソル位置に挿入します。 [検索]ボタン・・・検索文字列Boxに入力した文字列を探し,反転選択します。 [置換]ボタン・・・検索などで選択された文字列を,挿入文字列Boxに入力した文字列に置換する。(検索,置換を繰り返すと複数の検索,置換が実行できる) [文字数カウント]ボタン・・・総文字数を末尾に表示します。 その他のボタンは,標準の操作と同じです。 |
import java.applet.*;
import java.awt.*;
public class ja53 extends Applet
{
Label LA1 = new Label("挿入文字列"); //ラベルの作成
Label LA2 = new Label("検索文字列");
TextField TF1 = new TextField(25); //1行25ドットのTextFieldを作成
TextField TF2 = new TextField(25);
TextArea TA = new TextArea("テキスト編集エリア",10,40); //10行40ドット(列)のTextAreaを作成
Button CUT,COPY,PASTE,INSERT,FIND,TIKAN,REPLACE,ALL,countTA; //ボタン
Panel PA1 = new Panel(); //パネルの作成
Panel PA2 = new Panel();
String tf1s,tf2s,tas,st; //編集用の文字列を格納
public void init()
{
setLayout(new BorderLayout(10,10)); //AppletのレイアウトをBorderLayoutに設定
PA1.add(LA1); //パネル1にラベル2個と,TextField2個を配置
PA1.add(TF1);
PA1.add(LA2);
PA1.add(TF2);
add("North",PA1); //パネル1をBorderLayoutの"North"(上部)に配置
add("Center",TA); //TextAreaをBorderLayoutの"Center"(中央)に配置
CUT = new Button("切取り"); //以下,各ボタンを作成
COPY = new Button("コピー");
PASTE = new Button("貼り付け");
INSERT = new Button("挿入");
FIND = new Button("検索");
TIKAN = new Button("置換");
REPLACE = new Button("大文字に変換");
ALL = new Button("全て選択");
countTA = new Button("文字数カウント");
PA2.add(CUT); //各ボタンをパネル2に配置
PA2.add(COPY);
PA2.add(PASTE);
PA2.add(INSERT);
PA2.add(FIND);
PA2.add(TIKAN);
PA2.add(REPLACE);
PA2.add(ALL);
PA2.add(countTA);
add("South",PA2); //パネル2をBorderLayoutの"South"(下部)に配置
st = "";
}
public boolean action(Event e,Object o){
int startst = TA.getSelectionStart(); //選択範囲の先頭,又はカーソル位置
int endst = TA.getSelectionEnd(); //選択範囲の末尾
if(e.target == CUT){ //[切取り]ボタンの場合
st = TA.getSelectedText(); //選択範囲の文字列を取得
TA.replaceText("",startst,endst); //選択範囲の文字列を””にする(削除する)
}
if(e.target == COPY)st = TA.getSelectedText(); //[コピー]ボタンの場合
if(e.target == PASTE)TA.replaceText(st,startst,endst);//[貼り付け]ボタンの場合
if(e.target == INSERT){ //[挿入]ボタンの場合
tf1s = TF1.getText();
TA.insertText(tf1s,startst); //TextFieldの文字列を,TextAreaのカーソル位置に挿入する
}
if(e.target == FIND){ //[検索]ボタンの場合
tf2s = TF2.getText();
int n = TA.getText().indexOf(tf2s);
//indexOf()は,TA.getText()の中で文字列tf2sが最初に出現する位置を返す
//出現しない場合,-1を返す
if(n >= 0){
TA.select(n,n + tf2s.length()); //結局,文字列tf2sが選択される
TA.requestFocus(); //TextAreaにフォーカスを移す(java.awt.Componentクラスのメソッド)
}
}
if(e.target == TIKAN){ //[置換]ボタンの場合
tf1s = TF1.getText();
TA.replaceText(tf1s,startst,endst); //現在選択されている文字列をTextField1の文字列で置換
}
if(e.target == REPLACE){ //[大文字に変換]ボタンの場合
tas = TA.getText();
for(int i = 0;i < tas.length();i++){
if(Character.isLowerCase(tas.charAt(i))){
//TextAreaの文字列で,i番目の文字が小文字ならtrueを返す
TA.replaceText(String.valueOf(tas.charAt(i)).toUpperCase(),i,i+1);
//i番目の文字を大文字に変換し,さらにString型に変換し,i番目の文字と置き換える
}
}
return true;
}
if(e.target == ALL)TA.selectAll(); //[全て選択]ボタンで,TextAreaの全文字列を選択
if(e.target == countTA){ //[文字数カウント]ボタンの場合
tas = TA.getText();
int count = tas.length(); //TextArea内の文字数を取得
TA.appendText("\n現在の文字数は= " + count);
//TextAreaの末尾に文字列を追加。\n は,この位置で改行する
}
return true;
}
}
末尾