| スクロールバーを使い色を変化さす。 テキストボックスに 0〜255の数値を入力し,[Enter]キーでもよい。 |
|
import java.applet.Applet;
import java.awt.*;
public class ja52 extends Applet
{
Scrollbar sRed,sGreen,sBlue; //3個のスクロールバー
Label lRed,lGreen,lBlue; //3個のラベル
TextField tfR,tfG,tfB; //3個のテキストフィールド
Panel PL1,PL2,PL3; //3個のパネル
int nR,nG,nB; //Red,Green,Blueの色の値
public void init(){
sRed=new Scrollbar(Scrollbar.HORIZONTAL,128,1,0,255); //3個のスクロールバーの作成と設定
sGreen=new Scrollbar(Scrollbar.HORIZONTAL,128,1,0,255);
sBlue=new Scrollbar(Scrollbar.HORIZONTAL,128,1,0,255);
sRed.setPageIncrement(15); //Scrollbarのつまみ(バブル)の右/左がクリックされた時の増減値を15に
sGreen.setPageIncrement(15);
sBlue.setPageIncrement(15);
lRed=new Label("Red 128",Label.RIGHT); //3つのラベルを作成し,テキストは右配置に
lGreen=new Label(" Green 128 :",Label.RIGHT);
lBlue=new Label(" Blue 128 :",Label.RIGHT);
tfR=new TextField("128",5); //3個のTextFieldを作成
tfG=new TextField("128",5);
tfB=new TextField("128",5);
PL2=new Panel(); //パネル2の作成
PL2.setLayout(new GridLayout(3,2)); //3行2列の配置
PL2.add(lRed); //パネル2にラベルとテキストフィールドを配置
PL2.add(tfR);
PL2.add(lGreen);
PL2.add(tfG);
PL2.add(lBlue);
PL2.add(tfB);
PL3=new Panel(); //パネル3の作成
PL3.setLayout(new GridLayout(3,1)); //3行1列の配置
PL3.add(sRed); //パネル3のスクロールバーを配置
PL3.add(sGreen);
PL3.add(sBlue);
PL1=new Panel(); //パネル1の作成
PL1.setLayout(new GridLayout(1,2)); //1行2列の配置
PL1.add(PL2); //パネル1にパネル2とパネル3を配置
PL1.add(PL3);
setLayout(new BorderLayout()); //アプレットにBorderLayoutを設定
add("North",PL1); //パネル1を上部(North)に配置する
}
public void paint(Graphics g){
nR=sRed.getValue(); //スクロールバーから現在の値を取得する
nG=sGreen.getValue();
nB=sBlue.getValue();
g.setColor(new Color(nR,nG,nB)); //取得した値から色を作成
g.fillRect(120,80,200,70); //塗り潰された四角形を描く
}
public boolean handleEvent(Event e){ //スクロールバーのイベント処理
switch(e.id){
case Event.SCROLL_LINE_UP:
case Event.SCROLL_LINE_DOWN:
case Event.SCROLL_PAGE_UP:
case Event.SCROLL_PAGE_DOWN:
case Event.SCROLL_ABSOLUTE:
//スクロールバーで何らかのイベントが発生した場合,getValueで値を取得
if(e.target==sRed){
nR=sRed.getValue();
lRed.setText("Red "+nR+":"); //ラベルの内容を変更
tfR.setText(String.valueOf(nR)); //テキストフィールドの値も変更
}else if(e.target==sGreen){
nG=sGreen.getValue();
lGreen.setText("Green "+nG+":");
tfG.setText(String.valueOf(nG));
}else if(e.target==sBlue){
nB=sBlue.getValue();
lBlue.setText("Blue "+nB+":");
tfB.setText(String.valueOf(nB));
}
repaint(); //paintメソッドを呼び出し,四角形を再描画する
break;
}
return super.handleEvent(e);
}
public boolean action(Event evt,Object o){
if(evt.target instanceof TextField){ //テキストフィールドのイベント処理
if(evt.target == tfR){
nR = Integer.valueOf(tfR.getText()).intValue(); //値を取得
nR = Math.max(0,Math.min(255,nR)); //値が0〜255の範囲になるように
sRed.setValue(nR); //値をスクロールバーに反映する
lRed.setText("Red "+nR+":"); //ラベルの文字も変更
}else if(evt.target == tfG){
nG = Integer.valueOf(tfG.getText()).intValue();
nG = Math.max(0,Math.min(255,nG));
sGreen.setValue(nG);
lGreen.setText("Green "+nG+":");
}else if(evt.target == tfB){
nB = Integer.valueOf(tfB.getText()).intValue();
nB = Math.max(0,Math.min(255,nB));
sBlue.setValue(nB);
lBlue.setText("Blue "+nB+":");
}
repaint(); //テキストフィールドの入力値により再描画
return true;
}
return false;
}
}
末尾