Java 2 - Lesson01

Similar documents
Java 2 - Lesson01

Java言語 第1回

public class Kadai _02 { public static void main(string[] args) { MyFrame frame = new MyFrame("Kadai _02"); (2) フレームのクラス名は MyFrame とし 以下

Java言語 第1回

10/31 Java AWTの基本構造(Frameクラスの継承) 演習課題資料

PowerPoint Presentation

Java 2 - Lesson01

2 static final int DO NOTHING ON CLOSE static final int HIDE ON CLOSE static final int DISPOSE ON CLOSE static final int EXIT ON CLOSE void setvisible

目 次 Java GUI 3 1 概要 クラス構成 ソースコード例 課題...7 i

次の演習課題(1),(2)のプログラムを完成させよ

Java言語 第1回

Java言語 第1回

自宅でJava言語の開発環境を作る方法

HCI プログラミング 8 回目ボタン チェックボックス ラジオボタン 今日の講義で学ぶ内容 ボタンとアクションイベント ボタンのカスタマイズ チェックボックスとラジオボタン ボタンとアクションイベント 1 ボタンを配置してみましょう ボタンは ラベルと同じようにフォントやその色 画像の貼り付けなど

< F2D82518E9F8AD CC95BD8D7388DA93AE2E6A7464>

< F2D82518E9F8AD CC834F CC8CFC82AB82C68D4C>

第1章 ビジュアルプログラミング入門

< F2D A839382CC906A2E6A7464>

PowerPoint プレゼンテーション

< F2D825282CC947B909482CC A815B83682E6A>

< F2D F B834E2E6A7464>

< F2D82518CC282CC D2E6A7464>

第 1 章 : はじめに RogueWave Visualization for C++ の Views5.7 に付属している Views Studio を使い 簡単な GUI アプリケーションの開発手順を紹介します この文書では Windows 8 x64 上で Visual Studio2010

IE6 2 BMI chapter1 Java 6 chapter2 Java 7 chapter3 for if 8 chapter4 : BMI 9 chapter5 Java GUI 10 chapter6 11 chapter7 BMI 12 chap

Assignment_.java /////////////////////////////////////////////////////////////////////// // 課題 星の画像がマウスカーソルを追従するコードを作成しなさい 次 ///////////////////

ラベルを管理するクラス Label ラベルはクラス Label により管理され 各種設定を行うメソッドが準備されています ラベルの生成 new Label("1. 通常のラベルです "); ラベルのサイズ setprefsize(200,100); ラベル文字が 1. 通常のラベルです で横 200

JavaプログラミングⅠ

Applet java.lang.object java.awt.component java.awt.container java.awt.panel java.applet.applet

ブロック崩し Step1 矢印キーで左右に動かせるパドルを描画する < パドルの表現方法 > パドルは java.awt パッケージの Rectangle という Java が用意しているクラスを使う これは四角形を表すクラスで 左上の点の座標と幅 高さをもっている (x, y) Rectangle

I 4 p.2 4 GUI java.awt.event.* import /* 1 */ import mouseclicked MouseListener implement /* 2 */ init addmouselistener(this) this /* 3 */ this mousec

第1章 ビジュアルプログラミング入門

Local variable x y i paint public class Sample extends Applet { public void paint( Graphics gc ) { int x, y;... int i=10 ; while ( i < 100 ) {... i +=

C#の基本

5 p Point int Java p Point Point p; p = new Point(); Point instance, p Point int 2 Point Point p = new Point(); p.x = 1; p.y = 2;

第1章 ビジュアルプログラミング入門

Transcription:

Welcome to プログラミング演習 2 Instructor: Jianhua MA TA: 池邉曜 and 李漠 (LI Mo) Course HP URL: https://cis.k.hosei.ac.jp/~jianhua/course/j2/ 1

第 1 回 GUI (Graphics User Interface) 基礎とコンポーネントの作成 キーポイント GUI コンポーネント - GUI とは何か - GUI コンポーネントクラス - コンポーネントの作成 2

GUI(Graphics User Interface) とは Java ではグラフィカルなコンポーネント ( 部品 ) を用いたアプリケーション開発用に Swing という GUI ライブラリが用意されている ボタン ラベル テキスト 図形などをグラフィックとして描画する AWT(Abstract Window Toolkit) という GUI ライブラリも用意されているが Swing は使用できるコンポーネントなどが大きく増えたもの 3

GUI (Graphics User Interface) GUI コンポーネント ( 部品 ) Label ラベル TextField テキストフィールド Checkbox チェックボックス Button 押しボタン Choice 選択ボタン CheckboxGroup チェックボックスグルプラジオボタン List 選択リスト TextArea テキストエリア

java.awt パッケージ中の GUI コンポーネントとクラス継承階層 java.lang.object TextField TextComponent CheckboxGroup TextArea Button java.lang.object +--java.awt.component +--java.awt.label Component Label FlowLayout Container Panel Java.applet.Applet List Window Frame BorderLayout Choice GridLayout Checkbox 三種類のレイアウトコンポーネント配置 GUI Components

GUI コンポーネントの階層 javax.swingパッケージ中のswingコンポーネントは以下の3 階層に分類される JFrame トップレベルコンテナ (JFrame 等 ) メインウィンドウとなるコンポーネント 土台の役割 中間コンテナ (JPanel 等 ) コンポーネント配置のためのコンテナの役割 コントロール (JLabel JButton 等 ) ボタンやラベルなどの GUI コンポーネント Component Swing ではこれらの階層のコンポーネントを組み合わせて作成する JPanel1 JPanel2 6

GUI コンポーネント Swing は以下のような GUI コンポーネントを持つ JDialog( 標準ダイアログ ) JButton / JToggleButton( ボタン ) JCheckBox / JRadioButton ( チェックボックス ラジオボタン ) JMenuItem / JMenuBar / JMenu / JCheckBoxMenuItem / JRadioButtonMenuItem ( メニュー関連のコンポーネント ) JComboBox( ドロップダウンリスト ) JLabel / JTextArea / JTextPane( テキスト イメージ関連 ) JScrollBar( スクロールバー ) JToolBar( ツールバー ) etc.. 7

フレームの作成 (JFrame クラス ) ボタンやラベルなどのコンポーネントを配置するためのフレームを作成する import javax.swing.*; public class Practice01{ JFrame jf; //Swing をインポート public static void main(string[] args){ new Practice01(); public Practice01(){ jf = new JFrame("My Test"); // フレームのサイズと位置を設定 jf.setsize(300,350); jf.setlocation(400,200); // フレームを閉じた時にプログラムを終了 jf.setdefaultcloseoperation(jframe.exit_on_close); 演習課題を作成し 各要素の機能を理解して下さい // フレームの表示 (false で非表示 ) // コードの最後に記述して下さい ( コンポーネントの配置が終わる前に表示してしまうため ) jf.setvisible(true); 8

パネルの作成 (JPanel クラス ) ボタンやラベルなどのコンポーネントを貼りつけたり レイアウトを設定することができる public class Practice01{ /* フレームの記述は省略 */ JFrame jf; JPanel jpmain, jpsub; public static void main(string[] args){ new Practice01(); public Practice01(){ jpmain = new JPanel(); //Panel の色を指定 jpmain.setbackground(color.red); jpsub = new JPanel(); //Panel のサイズ Dimension は幅と高さの 2 値 jpsub.setpreferredsize(new Dimension(100,100)); jpsub.setbackground(color.blue); jpmain jpsub //Frame に Panel を追加と位置の指定 jf.add(jpmain, Center"); jf.add(jpsub,"south"); 色指定は java.awt の Color クラスのオブジェクトで行うので Import が必要 (import java.awt.color.*;) 9

パネルのレイアウト デフォルト設定の FlowLayout や BorderLayout GridLayout などのレイアウトマネージャが用意されている public class LayoutTest { public static void main(string[] args){ JFrame jf = new JFrame("LayoutTest"); JPanel jp1, jp2; JButton b1,b2,b3,b4,b5,b6,b7,b8; //(Button と Panel の定義は省略しています ) LayoutTest という名前のクラスを作成し 動作を確認して下さい jp1.setlayout(new BorderLayout()); // 宣言はなくても可 jp2.setlayout(new FlowLayout()); jp1.add(b1,"north"); // 以下のようにも書ける //jp1.add(b1,borderlayout.north); jp1.add(b2,"center"); jp1.add(b3,"south"); jp1.add(b4,"west"); jp1.add(b5,"east"); jp2.add(b6); jp2.add(b7); jp2.add(b8); jp1 jf.add(jp1,"center"); jf.add(jp2,"south"); jp2 jf.setsize(300, 300); jf.setvisible(true); jf.setdefaultcloseoperation(jframe.exit_on_close); 10

コンポーネントの作成 ( ラベル ボタン テキストフィールド ) ボタンやラベルなどのコンポーネントを配置するためのフレームを作成する public class Practice01{ public Practice01(){ //jf.add(jpsub, South ); //(jpsub パネルは使用しない ) JLabel jl = new JLabel( This is a label ); // ラベルの作成 jpmain.add(jl); //Panel に追加 // ボタンの作成 ( 引数にボタン上に表示されるテキストを与える ) JButton jb = new JButton( This is a button in teaching code ); jpmain.add(jb); // テキストフィールドの作成 ( 引数にテキストフィールド上に表示されるテキストを与える ) JTextField jtf = new JTextField( This is a text field in teaching code, 20); jpmain.add(jtf); JTextField jtf1 = new JTextField(20); jpmain.add(jtf1); 11

コンポーネントの前景色 背景色 透明 / 非透明 コンポーネントには前景色 ( 文字色 ) と背景色 ( コンポーネントの背景 ) 背景色の透明化の設定ができる public class Practice01{ public Practice01(){ JLabel jl = new JLabel(" I'm a label "); // 文字色の指定 jl.setforeground(color.red); // 背景の透明 非透明の設定 (false で透明 ) jl.setopaque(true); jpmain.add(jl); JButton jb = new JButton( This is a button in teaching code ); // 文字色と背景色の指定 ( ボタン以外のコンポーネントでも指定できる ) jb.setforeground(color.blue); jb.setbackground(color.black); jpmain.add(jb); 12

コンポーネントの作成 ( チェックボックス ) public class Practice01{ public Practice01(){ JLabel jlcareer = new JLabel(" Please select the careers you like: "); jpmain.add(jlcareer); JCheckBox[] jcbs = new JCheckBox[2]; jcbs[0] = new JCheckBox("Teacher"); jcbs[1] = new JCheckBox("Engieneer"); for(int i = 0; i < 2; i++){ //JCheckBox オブジェクトをそれぞれ追加 jpmain.add(jcbs[i]); 13

コンポーネントの作成 ( ラジオボックス コンボボックス ) public class Practice01{ public Practice01(){ // ラジオボタンのボタングループを作成 ButtonGroup bg_sex = new ButtonGroup(); // ラジオボタンのオブジェクトを作成 JRadioButton jrb_student = new JRadioButton( student"); // チェックを入れたい場合以下のように指定 jrb_student.setselected(true); // ラジオボタンのオブジェクトを add する jpmain.add(jrb_student ); JRadioButton jrb_teacher = new JRadioButton( teacher"); jpmain.add(jrb_teacher); bg_sex.add(jrb_student); bg_sex.add(jrb_teacher); // コンボボックスを作成 JComboBox jcb = new JComboBox(); for(int i = 1; i <= 3; i++){ // コンボボックスのアイテムを追加 jcb.additem(i); jpmain.add(jcb); 14

メニューバーの作成 ( バー ヘルプ ) メニューバーの作成と内部のアイテムの作成を行う public class Practice01{ public Practice01(){ JMenuBar jmb = new JMenuBar(); // メニューバーの作成 JMenu menu_file = new JMenu( File ); // メニューの作成 menu_file.setmnemonic( F ); //( ショートカットキー ) jmb.add(menu_file); // メニューバーにメニューを追加 JMenu menu_help = new JMenu("Help"); jmb.add(menu_help); // メニューアイテムの作成 追加 JMenuItem jmi_new = new JMenuItem("New"); menu_file.add(jmi_new); JMenuItem jmi_open = new JMenuItem("Open"); menu_file.add(jmi_open); JMenuItem jmi_save = new JMenuItem("Save"); menu_file.add(jmi_save); jf.setjmenubar(jmb); // メニューバーの追加 15

ツールバーの作成 ツールバーの作成を行うツールバーにはボタンや画像などを配置できる public class Practice01{ public Practice01(){ JToolBar jtlbar = new JToolBar(); // ツールバー内のアイテムの作成 JButton jbtnopen = new JButton(" 開く "); JButton jbtnexit = new JButton(" 終了 "); JButton jbtnhelp = new JButton(" ヘルプ "); // ツールバーに追加する jtlbar.add( jbtnopen ); jtlbar.add( jbtnexit ); jtlbar.addseparator(); // セパレータの追加 jtlbar.add( jbtnhelp ); jf.add(jtlbar, North ); // ツールバーの配置 16

画像の利用 ( ラベル ボタン ) ラベルやボタンには画像を利用することができる public static void main(string[] args){ JFrame jf = new JFrame( ImageTest"); JPanel jp = new JPanel(new FlowLayout()); ImageIcon icon1 = new ImageIcon("new.gif"); JLabel label = new JLabel(icon1); ImageIcon icon2 = new ImageIcon("save.gif"); JButton button1 = new JButton(icon2); ImageTest という名前のクラスを作成し 動作を確認して下さい ImageIcon icon3 = new ImageIcon("open.gif"); JButton button2 = new JButton(icon3); jp.add(label); jp.add(button1); jp.add(button2); jf.add(jp); jf.setsize(300, 100); jf.setvisible(true); jf.setdefaultcloseoperation(jframe.exit_on_close); 17

JFrame クラスを継承 GUI の土台となる JFrame をクラスに継承することができる JFrame のサブクラスを作成した上で JFrame のメソッドを拡張したり 新規のメソッドを追加していくことができる import javax.swing.jframe; class Practice01_2 extends JFrame{ public static void main(string args[]){ //JFrame を継承したサブクラスのオブジェクトを作成 Practice01_2 jf = new Practice01_2( MyTest2"); // コンストラクタ内に記述 Practice01_2(String title){ JButton btn1 = new JButton( Button1"); btn1.addactionlistener(this); //JFrame を継承した場合 以下のように記述することができる add(btn1); settitle(title); setsize(300,350); setlocation(400,200); setdefaultcloseoperation(jframe.exit_on_close); setvisible(true); 18

JFrame 継承クラスを用いて画面を作成 先ほど作成した Practice01 を利用して JFrame 継承クラスで再作成する JFrame クラスの使い方だけ変更する import javax.swing.jframe; //JFrame jf; //<-JFrame オブジェクトは必要ない class Practice01_3 extends JFrame{ public static void main(string args[]){ new Practice01_3("Practice01_3"); Practice01_3(String title){ // タイトルの設定 settitle(title); //JFrame を継承しているので jf.add~ や jf.set~ // というようにする必要がない setjmenubar(jmb); add(jpmain, "Center"); setsize(300,400); setlocation(400,200); setdefaultcloseoperation(jframe.exit_on_close); setvisible(true); 同じ画面を作成できる JFrame オブジェクトを作成する一手間がないので コードを綺麗に記述できる JFrame を継承する方法も JFrame オブジェクトを作成する方法も 実際にやっていることに大差はない 19

Exercise 1 次のようなデザインの GUI を Ex1BasicComponent という名前のクラスで作成して下さい (JFrame のサイズ 300x400) メニューバーを作成し アイテムを追加する ツールバーを作成し 画像を用いたアイコンを挿入する コンボボックスのアイテムは 1~9 の数字を追加する ラベル ボタン ラジオボタン コンボボックス チェックボックス テキストフィールドを配置する 背景色 テキストの色を変更したコンボボックスを作成する 上のパネルと別のパネルを用意しボタンを配置するまた 図にあるようなレイアウトにする 20