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

Slides:



Advertisements
Similar presentations
Ver 準備 Java フォルダに移動して …… mkdir Swing Swing フォルダに移動して …… cp ~gundam/Java/Swing. コマンドプロンプト ( JDK ) でないと起動 しないので注意!!!
Advertisements

プログラミング第5回 1 while ループ 文字列の操作
社会人学習講座 「Javaプログラミング概論」
マルチスレッド処理 (II) Multithreading
GridLayout オブジェクト(省略)
プログラミング演習3 李 亜民クラス 第2回 ラスタライズ.
Imageの描画 画像を読み込んで表示すること。 import java.awt.*;が必要。
Applet 岡部 祐典 鈴木 敬幸.
Win32APIとMFC H107102 古田雅基 H107048 佐藤一樹 H107126 山下洋平.
Ex8. Search for Vacuum Problem(2)
GUIコンポーネントの設定と配置 Creation and positioning of GUI components
JAVA GUIプログラミング 第6回 TextFieldとLabel.
JAVA GUIプログラミング 第1回 JAVAの実行 絵を描こう.
アプレット (Applet)について.
1.Java 概要 2.簡単なアプレット 3.動画を表示するアプレット 4.アプレットの改良 5.開発環境の利用(データベース)
Iアプリプログラミング その1  鳥居秀徳.
Javaでゲーム  山本拓弥.
Javaのインタフェース についての補足 2006年5月17日 海谷 治彦.
JAVA.
第2回:Javaの変数と型の宣言 プログラミングII 2007年10月2日.
 Applet アプレット ◇長い長いアプレット講座◇.
第14回 GUIの構成とイベント・ドリブン ~GUIを使ったプログラム(Ⅰ)~.
福盛 秀雄, 浜中 征志郎, 菅原 健一, 吉川 潤, 中山 周平 早稲田大学 村岡研究室
プログラミング実習 1・2 クラス 第 1 週目 担当教員:  渡邊 直樹.
計算機プログラミングI 第12回 2003年1月23日(木) インターフェース スレッド 最後に お知らせ クイズ 授業アンケート
CGプログラミング論 平成28年4月27日 森田 彦.
例外処理 Exception Handling
インタフェース プログラミング 第14回 インタフェース プログラミング第14回.
Javaプログラムの実行まで バイト Javaの コード 実行 ソースコード Java ファイル名 ファイル名 abc.java
アプレット プログラミング 第10回 アプレット プログラミング第10回.
情報学部 プログラミング体験教室 (初級編)
CONCURRENT PROGRAMMING
プログラミング演習3 第2回 GUIの復習.
Unity, C# 移動するモデルの位置を 指定した位置へ自動修正
Unity, C# シーン移動と1人称視点.
オブジェクト指向 プログラミング 第十四回 知能情報学部 新田直也.
JAVA入門後期⑨ JAVAのSwingのメニュー処理
JAVA GUIプログラミング 第2回 グラフィックスを使っての演習 グラフを描こう.
Java入門 13.5カラーの使用 13.6テキストの表示                  2003/12/12                   紺野憲一.
UDPマルチキャストチャット                    空川幸司.
第9章 例外処理,パッケージ 9.1 例外処理 9.2 ガーベッジコレクション.
JAVA入門後期⑦ JAVAのSwingの基本構造
オブジェクト指向 プログラミング 第十三回 知能情報学部 新田直也.
第15回独習Javaゼミ セクション14~15 発表者 直江宗紀.
ローカル変数とグローバル変数 ローカル変数  定義された関数内だけで使用できる変数 グローバル変数 プログラム全体で使用できる変数.
オブジェクト指向 プログラミング 第十四回 知能情報学部 新田直也.
プログラミング演習3 第2回 GUIの復習.
プログラミング基礎a 第10回 Javaによる図形処理入門(2) GUIの使い方
Java/Swingについて (3) 2005年10月19日 海谷 治彦.
10-1 SAXの概要 10-2 Saxプログラミングの基礎 10-3 saxのプログラム例
JAVA入門後期③ JAVAのGUI (JavaのGUI基本構造、いろいろなアプレット)
JAVA入門後期⑥ JAVAのAWTの基本構造 (レイアウトマネージャー、 ウインドウ型アプリケーション)
プログラミング基礎a 第10回 Javaによる図形処理入門(2) GUIの使い方
プログラミング基礎a 第12回 Java言語による図形処理入門(3) アニメーション入門
プログラミング基礎a 第11回 Java言語による図形処理入門(3) アニメーション入門
プログラミング入門第6回 ~レゴロボットのプログラミング6~
ソフトウェア制作論 平成30年11月21日.
プログラミングⅠ 平成30年10月22日 森田 彦.
JAVA入門後期④ イベント、AWT、の基本構造、スレッド
JAVA GUIプログラミング 第3回 イベント処理① マウスイベント.
オブジェクト指向言語論 第十二回 知能情報学部 新田直也.
C#プログラミング実習 第3回.
プログラミング基礎a 第9回 Java言語による図形処理入門(1) Javaアプレット入門
GUI部品とイベント処理の例 マインスィーパもどきの作成 倉敷芸術科学大学 産業科学技術学部 梶浦文夫.
プログラミング実習(Java) グラフィクス処理とGUIプログラミング 講師:坂口 利裕(横浜市立大学)
7.アプリケーションの連携 7-1 インテント(intent) 1.アプリケーションの連携とは
第2章 数値の入力と変数 scanfと変数をやります.
7-3 サービスの連携 1.サービスとは 画面を持たずに処理を行う【AndroidManifest.xmlへの追加】 …
5.基本API 5-1 レイアウト ウィジェットの並べ方を指定するには、 パレットのレイアウト(Layoutでは以下の8種類)を配置する。
5-6 SurfaceView による高速描画 (1)SurfaceViewを使う A. SurfaceView とは
Presentation transcript:

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

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

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

サンプルです(長いよ) 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();

サンプルです(長いよ) 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);

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

サンプルです(長いよ) 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); }

サンプルです(長いよ) 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; } }

サンプルです(終わり) 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) {}; }

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

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

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

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

解説 宣言部 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にします。 解説 宣言部 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にします。

解説 宣言部 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します。

解説 宣言部 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を用意します

解説 宣言部 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方向の変化量を 表す変数を用意します

解説 宣言部 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(); 以前と同じっス

解説 宣言部 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を上という ボタンにします

解説 宣言部 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(); パネルを用意します

解説 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);

解説 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の値を設定します

解説 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の移動量を設定します

解説 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); 画像の読み込みですね

解説 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までを 処理するイベントとして追加する

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

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

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

解説 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); } この前とまったく同じなので…(≧▽≦)

解説 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) {}; }

解説 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だけ増やしてあげます

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

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

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

解説 イベント処理部 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にする

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