マルチメディアコンピューティングU
第5章:マウスを使う
5.1 クリックした位置の取得法
import java.applet.*;
import java.awt.Graphics;
import java.awt.event.MouseListener;
import java.awt.event.MouseEvent;
public class mouseRei1 extends Applet implements MouseListener
{
int x0=0, y0=0, x1=0, y1=0;
public void init()
{
addMouseListener(this);
}
public void mousePressed(MouseEvent e)
{
x0=e.getX();
y0=e.getY();
}
public void mouseReleased(MouseEvent e)
{
x1=e.getX();
y1=e.getY();
repaint();
}
public void mouseClicked(MouseEvent e){}
public void mouseEntered(MouseEvent e){}
public void mouseExited(MouseEvent e){}
public void paint(Graphics g)
{
g.drawLine(x0,y0,x1,y1);
}
}
import java.applet.*;
import java.awt.Graphics;
import java.awt.event.MouseListener;
import java.awt.event.MouseEvent;
import java.awt.Color;
public class mouse1 extends Applet implements MouseListener
{
int flag = 0;
public void init()
{
addMouseListener(this);
}
public void mousePressed(MouseEvent e){}
public void mouseReleased(MouseEvent e) {}
public void mouseClicked(MouseEvent e){}
public void mouseEntered(MouseEvent e){
flag = 1;
repaint();
}
public void mouseExited(MouseEvent e){
flag = 0;
repaint();
}
public void paint(Graphics g)
{
if(flag == 1) g.setColor(Color.red);
else g.setColor(Color.green);
g.fillRect(0,0,1000,1000);
}
}
5.2 プッシュボタン
- ボタンが二つ以上ある場合はボタンに表示されている文字列を取得して識別する.
5.3 チェックボックス
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
public class checkbox extends Applet implements ActionListener
{
int ym=0, ki=0, hy=0;
Checkbox Yasuko=new Checkbox("光浦靖子");
Checkbox Kiriko=new Checkbox("磯野貴理子");
Checkbox Hanako=new Checkbox("山田花子");
Label Q = new Label("あなたの好きな女優は?");
Button b=new Button("送信");
public void init()
{
add(Q);
add(Yasuko);
add(Kiriko);
add(Hanako);
add(b);
b.addActionListener(this);
}
public void actionPerformed(ActionEvent e){
if( Yasuko.getState() ) ++ym;
if( Kiriko.getState() ) ++ki;
if( Hanako.getState() ) ++hy;
repaint();
Yasuko.setState(false);
Kiriko.setState(false);
Hanako.setState(false);
}
public void paint(Graphics g)
{
String s1=Integer.toString(ym);
String s2=Integer.toString(ki);
String s3=Integer.toString(hy);
g.drawString("光浦靖子 "+s1, 10,100);
g.drawString("磯野貴理子 "+s2, 10,125);
g.drawString("山田花子 "+s3, 10,150);
}
}
5.4 メニュー
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
public class window extends Applet implements ActionListener
{
private Frame f;
public void init()
{
setSize(200,200);
Dimension d = getSize();
f = new myFrame(this);
f.setSize(d);
f.show();
}
public void actionPerformed(ActionEvent e){}
public void paint(Graphics g)
{
g.drawString("hello", 10, 10);
}
}
class myFrame extends Frame implements ActionListener
{
private Applet a;
private MenuBar mb;
public String m = new String();
public myFrame(Applet ap)
{
super("NEW FRAME");
a = ap;
mb = new MenuBar();
Menu m1 = new Menu("好きな女優");
MenuItem mi11 = new MenuItem("光浦靖子");
mi11.addActionListener(this);
m1.add(mi11);
MenuItem mi12 = new MenuItem("磯野貴理子");
mi12.addActionListener(this);
m1.add(mi12);
MenuItem mi13 = new MenuItem("山田花子");
mi13.addActionListener(this);
m1.add(mi13);
mb.add(m1);
setMenuBar(mb);
}
public void actionPerformed(ActionEvent e) {
MenuItem mit = (MenuItem)e.getSource();
String s = mit.getLabel();
if( s=="光浦靖子") {
m = "光浦靖子が好きです";
}
else if( s=="磯野貴理子") {
m = "磯野貴理子が好きです";
}
else if( s=="山田花子") {
m = "山田花子が好きです";
}
repaint();
}
public void paint(Graphics g) {
g.drawString(m, 10, 100);
}
}
import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
public class Scroll extends Applet implements AdjustmentListener{
Scrollbar scrH, scrV; // スクロールバーの名前宣言
int sliderH, sliderV;
public void init(){
scrH = new Scrollbar( Scrollbar.HORIZONTAL ); // スクロールバーの定義
scrV = new Scrollbar( Scrollbar.VERTICAL, 30,10,0,60); //スクロールバーの定義
//30は初期値,10はスライダの幅,0は最小値,60は最大値(実際には50=60-10)
add( scrH ); add( scrV ); // スクロールバー取付
scrH.setUnitIncrement( 2 ); // 方向ボタンの増分を変更
scrH.setValues( 60, 10, 0, 110 ); // スクロールバーの変数を指定
sliderH = 60; sliderV = 30; // 初期値を代入
scrH.addAdjustmentListener( this ); // イベントリスナーへの登録
scrV.addAdjustmentListener( this );
setBackground( Color.lightGray );
}
// スクロールバーに変位があったときのイベント処理
public void adjustmentValueChanged( AdjustmentEvent e ){
if( e.getSource() == scrH ) sliderH = scrH.getValue();
if( e.getSource() == scrV ) sliderV = scrV.getValue();
repaint();
}
// メインの描画ルーチン
public void paint( Graphics g ){
int v = 50 + sliderV;
g.drawString( "SliderH="+sliderH, 5, 11 );
g.drawString( "SliderV="+sliderV, 5, 22 );
g.drawOval( 3*sliderH, v, sliderH, sliderH );
}
}
import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
public class KeyInput extends Applet implements KeyListener{
String text = " ";
public void init(){
setBackground( Color.lightGray );
addKeyListener( this );
requestFocus();
}
public void keyTyped( KeyEvent e ){
text += e.getKeyChar();
repaint();
}
public void keyPressed( KeyEvent e ){ }
public void keyReleased( KeyEvent e ){ }
public void paint( Graphics g ){
g.drawString( text, 10, 50 );
}
}
import java.applet.*;
import java.awt.*;
public class fireball extends Applet
{
public void paint(Graphics g)
{
fireball(g,100,100,50,'r');
}
public void fireball(Graphics g, int x0, int y0, int r, char color)
{
int xi, yi, dy, dx, dxy, z, bw, xmax, xmin, ymax, ymin;
double a=-0.2, b=-0.2, c=1.0, d, m=13.7;
g.setColor(new Color(0,0,0));
d = Math.sqrt(Math.pow(a,2.0)+Math.pow(b,2.0)+Math.pow(c,2.0));
a*=m/d;
b*=m/d;
c*=m/d;
xmax=x0+r;
xmin=x0-r;
ymax=y0+r;
ymin=y0-r;
for(yi=ymin;yi<=ymax;yi++){
for(xi=xmin;xi<=xmax;xi++){
dx=xi-x0;
dy=yi-y0;
dxy=(int)(Math.sqrt(Math.pow(dx,2.0)+Math.pow(dy,2.0)));
if(dxy<=r){
z=(int)(Math.sqrt(r*r-Math.pow(dxy,2.0)));
bw=(int)((dx*a+dy*b+z*c)/r*18);
if(bw<0) bw=0;
if(color=='r') g.setColor(new Color(bw,0,0));
else if(color=='g') g.setColor(new Color(0,bw,0));
else if(color=='y') g.setColor(new Color(bw,bw,0));
else g.setColor(new Color(bw,bw,bw));
g.drawLine(xi,yi,xi,yi);
}
}
}
}
}
2003.12.3