• 検索結果がありません。

ガイダンス

N/A
N/A
Protected

Academic year: 2021

シェア "ガイダンス"

Copied!
23
0
0

読み込み中.... (全文を見る)

全文

(1)

情報科学B

第10回 GUI

1 情報科学B 第10回 GUI 情報科学B Info2/3・・・ Example10_1.java info10 ←今日のフォルダー作成

プログラムの1行目に以下を入れること

// vm12345 杉崎 えり子

(2)

今日やること

2 情報科学B 第10回 GUI

Windowsなどで見られるウィンドウを作

成して(GUIプログラム)、そこに実行結

果を表示させる

(3)

3

ウィンドウの作成

情報科学B 第10回 GUI

(4)

金型

4 情報科学B 第10回 GUI

ドーナツ型 ワッフル型

(5)

金型

5 情報科学B 第10回 GUI たい焼き型

小倉あん味

チョコレート味

クリーム味

金型は同じだけれど、出

来上がるものは様々

(6)

ウィンドウの作成

6 情報科学B 第10回 GUI

ウィンドウ型

バックグラウンドが

グレーのウィンドウ

ウィンドウ金型から様々な

色のウィンドウを作成する

バックグラウンドが

ピンクのウィンドウ

(7)

ウィンドウの作成

7 情報科学B 第10回 GUI

ウィンドウ型

ウィンドウ金型はJava

では

JFrame

と言う型名

今回は1個のウィンドウ

を作成し、そのウィンドウ

の名前を

myframe

とする

JFrame myframe = new JFrame();

クラス

(8)

8

ウィンドウの作成

main

情報科学B 第10回 GUI import javax.swing.*;

public class Example10_1{

public static void main(String[] args){ /* フレームを作成 */

JFrame myframe = new JFrame(); /* サイズを指定 */ myframe.setSize(400, 300); /* 終了処理を設定 */ myframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); /* 実際に表示する */ myframe.setVisible(true); } } 基本形のウィンドウ 作成と表示

実行結果

Example11_2.java コピーして実施

Mainをシンプルにしたい→メソッド化

Main myframe JFrame

Example10_1.java

(9)

public class Window extends JFrame{

コンストラクタ

public Window() {

}

メイン

public static void main(String[] args){

}

}

パネル作成 メイン

ウィンドウの作成

継承

①ウィンドウの作成

Window myframe = new Window();

メソッド化

JFrameクラスを継承 してWindowクラス を作成(更に機能を 追加するため) myframeオブジェクトを作成したらコン ストラクタ(Window)を実施する JFrameクラスを拡張して Windowクラスを作成

(10)

10

ウィンドウの作成

継承

情報科学B 第10回 GUI import javax.swing.*;

public class Example10_2 extends JFrame{ //JFrameの拡張

public Example10_2(){ //コンストラクタ

setSize(400, 300);

setDefaultCloseOperation(EXIT_ON_CLOSE); setVisible(true); //実際に表示する

}

public static void main(String[] args){

Example10_2 myframe = new Example10_2();

//拡張されたフレームを作成 } } 基本形のウィンド ウ作成と表示

実行結果

Example11_2.java Ex10_2 JFrame main

Example10_2.java

(11)

11 情報科学B 第10回 GUI import javax.swing.*; フレームを作成するクラスJFrameはjavax.swingというパッケージの中にあるの で、import文を使って呼び出しておく。これを書くことにより、javas.swing.JFrame をJFrameと簡単に書くことが可能になる。

public class Example10_1 extends JFrame{

Example10_1をJframeを継承して作ったことを宣言 public Example10_1(){ プログラムの初期状態を設定するためのメソッド。メソッド名はクラス名と同じに すること(コンストラクタ) 。 myframe.setSize(400, 300); myframeの幅400px、高さ300pxを設定。

ウィンドウの作成

継承

(12)

12 情報科学B 第10回 GUI myframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 「X」ボタンを押すとアプリケーションを終了させる。 myframe.setVisible(true); myframeを表示させる

Example10_1 myframe = new Example10_1();

Mainの中でExample10_1クラスのオブジェクトを生成しmyframeに代入

(13)

13

ボタンの作成

情報科学B 第10回 GUI 追記して実施 文字列を表示するために JLabelクラス(型)を用いて labelオブジェクトを作成 ボタンを作成するために JButtonクラス(型)を用いて オブジェクトを作成

(14)

14

ボタンの作成

情報科学B 第10回 GUI import javax.swing.*;

import java.awt.*; //BorderLayout()を使うために public class Example10_2 extends JFrame{

JLabel label; //labelをJLabelで宣言。Example10_2クラス内でlabel使用可

JButton button; //buttonをJbuttonで宣言。Example10_2クラス内でlabel使用可 public Example10_2(){

setSize(400, 300);

setDefaultCloseOperation(EXIT_ON_CLOSE);

label = new JLabel("clicks",JLabel.CENTER); //ラベルを作る button = new JButton("Click Me!"); //ボタンを作る

setLayout(new BorderLayout()); //レイアウトマネージャを指定 add(label, BorderLayout.CENTER); //ラベルを真ん中に配置 add(button, BorderLayout.SOUTH); //ボタンを下に配置 setVisible(true); //実際に表示する

}

public static void main(String[] args){

Example10_2 myframe = new Example10_2 (); } }

赤字が追加部分

追記して実施 Ex10_2 label button JFrame main JLabel JButton

Example10_2.java

に追記

(15)

15 情報科学B 第10回 GUI

import java.awt.*;

BorderLayoutを使用するために、import

label = new JLabel("clicks",JLabel.CENTER);

Jlabelクラスを使ってラベルオブジェクトを生成。””で囲まれる文字列を表示し、 Jlabel.CENTERで中央に表示

button = new JButton("Click Me!");

Jbuttonクラスを使ってボタンオブジェクトを生成。””で囲まれる文字列を中央に 表示する。 setLayout(new BorderLayout()); BorderLayoutはレイアウトマネージャで適当に配置してくれる。 add(label, BorderLayout.CENTER); ラベルを真ん中に配置。 add(button, BorderLayout.SOUTH); ボタンを下に配置。

実行結果

ボタンの作成

(16)

public class Button extends JFrame implements ActionListener {

コンストラクタ

public Button(){

addActionListener(this);

}

メイン

public static void main(String[] args){

}

イベント

public void actionPerformed(ActionEvent e) {

}

}

パネル作成 メイン ボタンクリック時の処理

ボタンを押すイベント

② ボタンの作成

Button myframe = new Button(); ボタンクリック処理 を行うために、リス ナーインタフェース を実装 myframeオブジェクトを作成したらコン ストラクタ(Button)を実施する

(17)

17

ボタンを押すイベント

情報科学B 第10回 GUI import javax.swing.*; import java.awt.*; import java.awt.event.*;

public class Example10_2 extends Jframe implements ActionListener { JLabel label; JButton button; int count = 0; public Example10_2(){ setSize(400, 300); setDefaultCloseOperation(EXIT_ON_CLOSE);

label = new JLabel("clicks",JLabel.CENTER); //ラベルを作る button = new JButton("Click Me!"); //ボタンを作る

setLayout(new BorderLayout()); //レイアウトマネージャを指定 add(label, BorderLayout.CENTER); //ラベルを真ん中に add(button, BorderLayout.SOUTH); //ボタンを下に配置 setVisible(true); //実際に表示する button.addActionListener(this); }

赤字が追加部分

追記して実施

Example10_2.javaに追記

(18)

18

ボタンを押すイベント

情報科学B 第10回 GUI //イベントがあったらここに来る

public void actionPerformed(ActionEvent e) { //イベントがbuttonで起こっていたら… if (e.getSource() == button) { count++; //countを増加 //ラベルの文字を換える。 label.setText(count + " clicks"); } } }

public static void main(String[] args){

Example10_2 myframe = new Example10_2 (); }

(19)

19 情報科学B 第10回 GUI

public class Example11_2 extends Jframe implements ActionListener import {

イベント処理のActionListenerの道具を使えるようにする

button.addActionListener(this);

ボタンにイベントの監視人をつける

public void actionPerformed(ActionEvent e) {

クリックを感知したらactionPerformedメソッドを実行。どんなイベントが起こったか はeというオブジェクトで知らせる。 if (e.getSource() == button) { イベントの発生がどこで起こったか調べbuttonかどうか。 label.setText(count + " clicks"); } かっこ内の数字と文字列を表示。

ボタンを押すイベント

実行結果

(20)

20

課題

ボタンを押すイベント

情報科学B 第10回 GUI

Kadai10_1.java

① クリックした回数表示(Example10_2.java)に加え、

あと何回クリック可能か(残数)を表示するようにし

なさい。クリックする前の残数は100とする。

・・・・

今日は課題の提出はない。

BorderLayout.NORTH BorderLayout.SOUTH

(21)

21

課題

ボタンを押すイベント

情報科学B 第10回 GUI

Kadai10_2.java

② カウントアップするボタン、カウントダウンするボタ

ン、0にクリアするボタンを作成し作動するプログラ

ムを作りなさい。

・・・・ BorderLayout.NORTH BorderLayout.SOUTH BorderLayout.EAST

(22)

22

課題

ボタンを押すイベント

情報科学B 第10回 GUI

Kadai10_3.java

③ 下図のように「今日の占い」を作成しなさい。結

果は、1~4の乱数を発生させ、対応したものを

表示させる。

乱数発生方法は次ページ参照

1のとき大吉 2のとき中吉 3のとき吉 4のとき凶

(23)

23

ヒント

※乱数の発生のさせ方(変数fortuneに1~4の乱数を代入する)

int fortune=new java.util.Random().nextInt(4); //0以上~4未満の乱数発 fortune++; //変数fortuneに1~4の乱数が格納される

乱数の発生方法

表示方法

Switch文を使ってfortuneの中身の1~4の値で判別させる

参照

関連したドキュメント

The purpose of this study is to clarify how utilized public support system for reconstructing or repairing of damaged houses in a case of Noto Peninsula Earthquake.. Repair of

The Dubai Canal creates new public spaces along its banks and connects the historic urban enclave along Khor Dubai to the modern city, interlacing lagoons and crossing the

  If, as argued above, monetary transfers between the water utility and potential customers disconnected are not allowed, then the water utility will be required to satisfy

of “ those who don ʼ t know the administration ʼ s satoyama conservation activity ” among those who know about the NPO. Therefore, informing the residents of the administration

This extends the notion of regular variation for Borel measures on the Euclidean space R d to more general metric spaces.. Typically ν is a probability measure but other classes

In our previous papers, we used the theorems in finite operator calculus to count the number of ballot paths avoiding a given pattern.. From the above example, we see that we have

[10] J. Buchmann & H.C. Williams – A key exchange system based on real quadratic fields, in Advances in Cryptology – Crypto ’89, Lect. Cantor – Computing in the Jacobian of

The class of SWKA Banach spaces extends the known class of strongly weakly compactly generated (SWCG) Banach spaces (and their subspaces) and it is related to that in the same way