Presentation is loading. Please wait.

Presentation is loading. Please wait.

JAVA GUIプログラミング 第5回 ボタンとそのイベント処理.

Similar presentations


Presentation on theme: "JAVA GUIプログラミング 第5回 ボタンとそのイベント処理."— Presentation transcript:

1 JAVA GUIプログラミング 第5回 ボタンとそのイベント処理

2 今日は・・ ボタンを用いて操作をする方法を学びます。 以前に行った、人が回転するプログラムを改造します
ただし、今回は旧式のプログラムで組んであるので 若干の違いはあります。

3 サンプルです(長いよ) import java.applet.*; import java.awt.*;
import java.awt.image.*; import java.awt.event.*;

4 サンプルです(長いよ) public class ex10 extends Applet implements Runnable,ActionListener { int x,y,flag; int delta_x,delta_y; Thread anime=null; Image image1,image2,image3,image4; Button button1=new Button("上"); Button button2=new Button("下"); Button button3=new Button("左"); Button button4=new Button("右"); Panel panel=new Panel();

5 サンプルです(長いよ) public void init() { x=100;y=100;flag=0;
delta_x=5; delta_y=0; image1=getImage(getCodeBase(),"s1.jpg"); image2=getImage(getCodeBase(),"s2.jpg"); image3=getImage(getCodeBase(),"s3.jpg"); image4=getImage(getCodeBase(),"s4.jpg"); button1.addActionListener(this); button2.addActionListener(this); button3.addActionListener(this); button4.addActionListener(this);

6 サンプルです(まだまだ) add(panel); panel.add(button1); panel.add(button2);
anime=new Thread(this); anime.start(); }

7 サンプルです(長いよ) public void paint(Graphics g) { g.setColor(Color.white);
g.fillRect(0,0,500,500); if ((flag % 4)==0) g.drawImage(image1,x,y,this); if ((flag % 4)==1) g.drawImage(image2,x,y,this); if ((flag % 4)==2) g.drawImage(image3,x,y,this); if ((flag % 4)==3) g.drawImage(image4,x,y,this); }

8 サンプルです(長いよ) public void actionPerformed(ActionEvent e) {
if(e.getSource()==button1) { delta_x=0; delta_y=-5; } if(e.getSource()==button2) { delta_x=0; delta_y=5; } if(e.getSource()==button3) { delta_x=-5; delta_y=0; } if(e.getSource()==button4) { delta_x=5; delta_y=0; } }

9 サンプルです(終わり) public void run() { while (anime!=null) {
x+=delta_x; y+=delta_y; flag+=1; repaint(); if (x>500) {x=0;} try { Thread.sleep(100); } catch (InterruptedException e) {}; }

10 実行結果はどうでしたか? ボタンを押すことにより、移動方向が変わりましたね では、早速ですが解説します。

11 解説import部 import java.applet.*; import java.awt.*;
import java.awt.image.*; import java.awt.event.*;

12 解説import部 import java.applet.*; import java.awt.*;
今回はjavax.swingではなく、このようにします。 import java.applet.*; import java.awt.*; import java.awt.image.*; import java.awt.event.*;

13 解説import部 import java.applet.*; import java.awt.*;
import java.awt.image.*; import java.awt.event.*; この3つもimportします

14 解説 宣言部 public class ex10 extends Applet implements Runnable,ActionListener { int x,y,flag; int delta_x,delta_y; Thread anime=null; Image image1,image2,image3,image4; Button button1=new Button("上"); Button button2=new Button("下"); Button button3=new Button("左"); Button button4=new Button("右"); Panel panel=new Panel();

15 解説 宣言部 今回はJappletではなくAppletにします。
解説 宣言部 public class ex10 extends Applet implements Runnable,ActionListener { int x,y,flag; int delta_x,delta_y; Thread anime=null; Image image1,image2,image3,image4; Button button1=new Button("上"); Button button2=new Button("下"); Button button3=new Button("左"); Button button4=new Button("右"); Panel panel=new Panel(); 今回はJappletではなくAppletにします。

16 解説 宣言部 public class ex10 extends Applet implements Runnable,ActionListener { int x,y,flag; int delta_x,delta_y; Thread anime=null; Image image1,image2,image3,image4; Button button1=new Button("上"); Button button2=new Button("下"); Button button3=new Button("左"); Button button4=new Button("右"); Panel panel=new Panel(); スレッドを用いるのでRunnableを、 ボタンのイベントを扱うのでActionListenerimplementsします。

17 解説 宣言部 public class ex10 extends Applet implements Runnable,ActionListener { int x,y,flag; int delta_x,delta_y; Thread anime=null; Image image1,image2,image3,image4; Button button1=new Button("上"); Button button2=new Button("下"); Button button3=new Button("左"); Button button4=new Button("右"); Panel panel=new Panel(); 変数x、y、flagを用意します

18 解説 宣言部 public class ex10 extends Applet implements Runnable,ActionListener { int x,y,flag; int delta_x,delta_y; Thread anime=null; Image image1,image2,image3,image4; Button button1=new Button("上"); Button button2=new Button("下"); Button button3=new Button("左"); Button button4=new Button("右"); Panel panel=new Panel(); X方向の変化量と Y方向の変化量を 表す変数を用意します

19 解説 宣言部 public class ex10 extends Applet implements Runnable,ActionListener { int x,y,flag; int delta_x,delta_y; Thread anime=null; Image image1,image2,image3,image4; Button button1=new Button("上"); Button button2=new Button("下"); Button button3=new Button("左"); Button button4=new Button("右"); Panel panel=new Panel(); 以前と同じっス

20 解説 宣言部 public class ex10 extends Applet implements Runnable,ActionListener { int x,y,flag; int delta_x,delta_y; Thread anime=null; Image image1,image2,image3,image4; Button button1=new Button("上"); Button button2=new Button("下"); Button button3=new Button("左"); Button button4=new Button("右"); Panel panel=new Panel(); button1を上という ボタンにします

21 解説 宣言部 public class ex10 extends Applet implements Runnable,ActionListener { int x,y,flag; int delta_x,delta_y; Thread anime=null; Image image1,image2,image3,image4; Button button1=new Button("上"); Button button2=new Button("下"); Button button3=new Button("左"); Button button4=new Button("右"); Panel panel=new Panel(); パネルを用意します

22 解説 init部 public void init() { x=100;y=100;flag=0;
delta_x=5; delta_y=0; image1=getImage(getCodeBase(),"s1.jpg"); image2=getImage(getCodeBase(),"s2.jpg"); image3=getImage(getCodeBase(),"s3.jpg"); image4=getImage(getCodeBase(),"s4.jpg"); button1.addActionListener(this); button2.addActionListener(this); button3.addActionListener(this); button4.addActionListener(this);

23 解説 init部 public void init() { x=100;y=100;flag=0;
delta_x=5; delta_y=0; image1=getImage(getCodeBase(),"s1.jpg"); image2=getImage(getCodeBase(),"s2.jpg"); image3=getImage(getCodeBase(),"s3.jpg"); image4=getImage(getCodeBase(),"s4.jpg"); button1.addActionListener(this); button2.addActionListener(this); button3.addActionListener(this); button4.addActionListener(this); xとyとflagの値を設定します

24 解説 init部 public void init() { x=100;y=100;flag=0;
delta_x=5; delta_y=0; image1=getImage(getCodeBase(),"s1.jpg"); image2=getImage(getCodeBase(),"s2.jpg"); image3=getImage(getCodeBase(),"s3.jpg"); image4=getImage(getCodeBase(),"s4.jpg"); button1.addActionListener(this); button2.addActionListener(this); button3.addActionListener(this); button4.addActionListener(this); Xの移動量 Yの移動量を設定します

25 解説 init部 public void init() { x=100;y=100;flag=0;
delta_x=5; delta_y=0; image1=getImage(getCodeBase(),"s1.jpg"); image2=getImage(getCodeBase(),"s2.jpg"); image3=getImage(getCodeBase(),"s3.jpg"); image4=getImage(getCodeBase(),"s4.jpg"); button1.addActionListener(this); button2.addActionListener(this); button3.addActionListener(this); button4.addActionListener(this); 画像の読み込みですね

26 解説 init部 public void init() { x=100;y=100;flag=0;
delta_x=5; delta_y=0; image1=getImage(getCodeBase(),"s1.jpg"); image2=getImage(getCodeBase(),"s2.jpg"); image3=getImage(getCodeBase(),"s3.jpg"); image4=getImage(getCodeBase(),"s4.jpg"); button1.addActionListener(this); button2.addActionListener(this); button3.addActionListener(this); button4.addActionListener(this); button1からbuttton4までを 処理するイベントとして追加する

27 解説 init部 add(panel); Panelを画面に追加します panel.add(button1);
anime=new Thread(this); anime.start(); } Panelを画面に追加します

28 解説 init部 add(panel); panel.add(button1); panel.add(button2);
anime=new Thread(this); anime.start(); } パネルにボタン4つを追加します

29 解説 init部 add(panel); panel.add(button1); panel.add(button2);
anime=new Thread(this); anime.start(); } スレッドを開始します

30 解説 paint部 public void paint(Graphics g) { g.setColor(Color.white);
解説 paint部 public void paint(Graphics g) { g.setColor(Color.white); g.fillRect(0,0,500,500); if ((flag % 4)==0) g.drawImage(image1,x,y,this); if ((flag % 4)==1) g.drawImage(image2,x,y,this); if ((flag % 4)==2) g.drawImage(image3,x,y,this); if ((flag % 4)==3) g.drawImage(image4,x,y,this); } この前とまったく同じなので…(≧▽≦)

31 解説 run部 public void run() { while (anime!=null) { x+=delta_x;
解説 run部 public void run() { while (anime!=null) { x+=delta_x; y+=delta_y; flag+=1; repaint(); if (x>500) {x=0;} try { Thread.sleep(100); } catch (InterruptedException e) {}; }

32 解説 run部 public void run() { while (anime!=null) { x+=delta_x;
解説 run部 public void run() { while (anime!=null) { x+=delta_x; y+=delta_y; flag+=1; repaint(); if (x>500) {x=0;} try { Thread.sleep(100); } catch (InterruptedException e) {}; } 今回はxとyをそれぞれdelta_x, delta_yだけ増やしてあげます

33 解説 イベント処理部 public void actionPerformed(ActionEvent e) {
解説 イベント処理部 public void actionPerformed(ActionEvent e) {  if(e.getSource()==button1)    {    delta_x=0; delta_y=-5;    }  以下略

34 解説 イベント処理部 public void actionPerformed(ActionEvent e) {
解説 イベント処理部 public void actionPerformed(ActionEvent e) {  if(e.getSource()==button1)    {    delta_x=0; delta_y=-5;    }  以下略 } この部分はActionListenerに登録したものに触れたときに自動的に呼び出される

35 解説 イベント処理部 public void actionPerformed(ActionEvent e) {
解説 イベント処理部 public void actionPerformed(ActionEvent e) {  if(e.getSource()==button1)    {    delta_x=0; delta_y=-5;    }  以下略 もしふれたものがbutton1であればという意味です

36 解説 イベント処理部 public void actionPerformed(ActionEvent e) {
解説 イベント処理部 public void actionPerformed(ActionEvent e) {  if(e.getSource()==button1)    {    delta_x=0; delta_y=-5;    }  以下略 Button1は上に移動することなので、 Xの移動量を0に、Yの移動量をー5にする

37 今日はここまで 今日はボタンを利用する方法を勉強しました ボタンを配置する場所を設定するのは今日はやりません(JAVAでは結構面倒・・)


Download ppt "JAVA GUIプログラミング 第5回 ボタンとそのイベント処理."

Similar presentations


Ads by Google