Swing n JLabel JFrame JText Field JButton main











Swingフレームワーク概要 n JLabel すべてがオブジェクト! JFrame JText. Field JButton




mainの修正 import javax. swing. *; //swingを使うときは宣言しなければならない //カスタムウインドウを出すために修正したクラス public class Simple. Window. Main { } public static void main(String args[]){ JFrame frame = new Simple. Window(); //オブジェクト生成 frame. set. Title(“初めてのカスタムウインドウ"); //タイトル設定 frame. set. Size(200, 200); //大きさ設定 frame. set. Location(50, 50); //位置設定 frame. set. Default. Close. Operation(frame. EXIT_ON_CLOSE); //ウインドウが閉じたときにプログラムが終了するように設定 frame. set. Visible(true); //表示する }












Simple. Windowの全リスト import javax. swing. *; //swingを使うときは宣言しなければならない import java. awt. event. *; //eventを使うときは宣言しなければならない //JFrameクラスを継承したカスタムウインドウクラス public class Simple. Window extends JFrame{ //コンストラクタ public Simple. Window(){ //ボタンの設定 JButton button = new JButton(); //ボタンをインスタンス化 button. set. Text("初めてのボタン"); //ボタンのラベル名設定 button. set. Size(150, 20); //ボタンの大きさ設定 button. set. Location(20, 50); //ボタンの位置設定(ウインドウからの相対位置) button. add. Action. Listener(new Simple. Button. Listener()); //ボタンを受信者登録 get. Content. Pane(). set. Layout(null); get. Content. Pane(). add(button); //ボタンをウインドウに乗せる } }












Coin. Depositのクラス図


GUIの基本クラス設計 n Model-View-Controller設計 Model View 日本 = 100 アメリカ = 150 中国 = 130 Controller 日 ア 中 本 メ 国 リ カ





簡単な実装の説明 Coin. Deposit. Modelクラス public class Coin. Deposit. Model { Model クラス private int amount; private Coin. Deposit controller; ※コメントは省略 public Coin. Deposit. Model(Coin. Deposit init. Controller){ controller = init. Controller; } public void add. Money(Money money){ amount = amount + money. get. Value(); controller. repaint(); } public int get. Amount(){ return amount; } public Money undo(){ //どうしたらできるか考えてみよう! } 現在入れられたお金の 総量を計算して、 持っています。

簡単な実装の説明 Coin. Deposit. UIクラス(1) View クラス public class Coin. Deposit. UI extends Component. UI { private Swingの 標準Viewクラス を継承します。 Image img; int img. Width = 160; int img. Height = 55; String img. Name = "image/coindeposit. gif"; 画像の読み込み を行ないます。 public Coin. Deposit. UI() { java. net. URL url = get. Class(). get. Class. Loader(). get. Resource(img. Name); img = Toolkit. get. Default. Toolkit(). get. Image(url); } public Dimension get. Preferred. Size(JComponent component){ return new Dimension(img. Width, img. Height); } コンポーネントの推奨サイズを返すメソッドです。 ※次ページに続く

簡単な実装の説明 Coin. Deposit. UIクラス(2) View クラス public void update(Graphics g, JComponent c){ paint(g, c); } Viewクラスは、 描画のアルゴリズム を備えています。 public void paint(Graphics g, JComponent c){ Coin. Deposit. Model model = ((Coin. Deposit)c). get. Model(); if(img != null){ g. draw. Image(img, 0, 0, img. Width, img. Height, c); } モデルから、 g. set. Color(Color. red); データを取ってきて、 g. set. Font(new Font("Dialog", Font. PLAIN, 32)); String amount. Str = model. get. Amount() + ""; 描画します。 g. draw. String(amount. Str, img. Width/4, img. Height*3/4); } }

簡単な実装の説明 Coin. Depositクラス Swingの 標準Controllerクラス を継承します。 Controller public class Coin. Deposit extends JComponent { クラス private Coin. Deposit. Model model; public Coin. Deposit() { model = new Coin. Deposit. Model(this); set. UI(new Coin. Deposit. UI()); } すべての、 public Coin. Deposit. Model get. Model(){ return model; } } Controllerクラスは、 まだユーザの操作を 受け付けるように できていません。 これから皆さんがここにプログラムを書いていきます。





- Slides: 54