Microsoft PowerPoint - swing2.ppt

Similar documents
Microsoft PowerPoint - swing3.ppt

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

PowerPoint Presentation

text_12.dvi

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

awt の主要なクラスを下記に示す クラス Component Container Button Label Panel Frame 説明画面にユーザインターフェイス要素として表示し, ユーザとのやり取りを行うコンポーネントを表すすべてのコンポーネントのスーパークラスになる ほかのコンポーネントを含

ガイダンス

ガイダンス

public class MyFrame { private JPanel panel1; private JPanel panel2; private JPanel panel3; private JPanel panel4; private JLabel label1; private JTex

アジェンダ 1 グラフィカルなインタフェース GUI(Graphical User Interface) の基礎 2 Swing を利用する Swing の基礎知識 2

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言語 第1回

GUI プログラミング第 4 Graph ~ 手書認識と関数グラフ描画 ~ マウスで数式を書いて認識し 関数グラフを描画する < 手書認識とグラフ描画のステップ> ステップ 1_1 フレームの作成 ステップ 1_2 マウスで自由に線を書く ステップ 2-1 手書認識認識結果を標準出力する ステップ

ガイダンス

ソフトウェア基礎演習 課題

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

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

PowerPoint プレゼンテーション

Microsoft PowerPoint - prog12.ppt

ÿþ˜u#u·0¹0Æ0à0

PowerPoint Presentation

Java 2 - Lesson01

Java 2 - Lesson01

......() JButton

<4D F736F F F696E74202D AC C8899E D834F E >

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

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

Prog1_12th

Prog1_12th

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

B 10 : N ip2003f10.tex B : 9/12/ :02 p.1/71

I. (i) Foo public (A). javac Foo.java java Foo.class (C). javac Foo java Foo (ii)? (B). javac Foo.java java Foo (D). javac Foo java Foo.class (A). Jav

Animals サンプル Step 1 動物の種類を指定しておいて クリックした場所に画像を貼り付ける < レイアウトについて > 前回は ラベルやボタンの位置を座標で設定した Absolute Layout を選んだためである レイアウトは どのようにボタンなどのコンポーネントを配置するかを決定す

text_13.dvi

ガイダンス

Java言語 第1回

2

r14.dvi

アプレットⅢ

アトミックコンポーネント ( 部 品 )<ボタン, 文 字 > 中 間 コンテナ ( 部 品 を 置 く 場 所 ) トップレベルコンテナ (GUI を 表 示 するための 場 所.コンテントペイン) Swingコンポーネントを 利 用 する 手 順 サンプル 10.1 (Helo.java)につい

Microsoft PowerPoint - OOP.pptx

ガイダンス

Java 2 - Lesson01

問1

Microsoft PowerPoint Java基本技術PrintOut.ppt [互換モード]

PowerPoint プレゼンテーション

HCI プログラミング 10 回目テキストフィールドとキーイベント 今日の講義で学ぶ内容 テキストフィールドの利用 キーイベントの処理 テキストフィールドの利用 1 テキストフィールドを配置してみましょう テキストフィールドを用いることにより 数値や文字列などのデータ入力が可能になります ソースファ

Prog2_11th

PowerPoint プレゼンテーション

Microsoft PowerPoint - prog13.ppt

Microsoft PowerPoint - prog13.ppt

< F2D E E6A7464>

手書認識 グラフ描画 Step2-2 手書認識 : 認識結果を PaintPanel で描画する < 属性付き文字列 AttributedString> 標準出力では分かりにくいうえに認識結果を使えないので 認識するごとに PaintPanel に文字を描画することにする ここで 数式はただの文字列

Microsoft Word - Java4.DOC

Microsoft PowerPoint - prog11.ppt

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

r3.dvi

< F2D B838A835882CC8CF68EAE2E6A7464>

ソフトウェア開発方法論2

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

以下に java.awt.graphics クラスの主なメソッドを示す (Graphics クラスの ) メソッド drawline(int x1, int y1, int x2, int y2) drawrect(int x, int y, int width, int height) fillr

Microsoft PowerPoint ppt

Java 2 - Lesson01

r2.dvi

実行時のメモリ構造\(2\) Javaスタック内のフレーム間動作

Microsoft Word - Java3.DOC

JavaプログラミングⅠ

< F2D834F838C A815B A CC>

Java言語 第1回

GUIプログラムⅣ

< F2D B825082CC96E291E82E6A7464>

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

11 ソフトウェア工学 Software Engineering デザインパターン DESIGN PATTERNS デザインパターンとは? デザインパターン 過去のソフトウェア設計者が生み出したオブジェクト指向設計に関して, ノウハウを蓄積し 名前をつけ 再利用しやすいようにカタログ化したもの 各デ

2008 e-learning T050050

Microsoft Word - 第七週Java講座.docx

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

リファレンス,配列 例外処理

Microsoft PowerPoint - prog03.ppt

GUIプログラムⅤ

2

Javaセキュアコーディングセミナー2013東京第1回 演習の解説

< F2D82518E9F8AD CC95BD8D7388DA93AE2E6A7464>

6 p.1 6 Java GUI GUI paintcomponent GUI mouseclicked, keypressed, actionperformed mouseclicked paintcomponent thread, 1 GUI 6.0.2, mutlithread C

JavaプログラミングⅠ

(Microsoft Word - java\221n\221\242\203\214\203|\201[\203g.doc)

最初に

(Microsoft PowerPoint - \223\306\217KJAVA\221\346\202R\224\ ppt)

< F2D82B682E182F182AF82F12E6A7464>

1 Java Java GUI , 2 2 jlabel1 jlabel2 jlabel3 jtextfield1 jtextfield2 jtextfield3 jbutton1 jtextfield1 jtextfield2 jtextfield3

Animals サンプル Step3 張り付けた動物の上をクリックすると それぞれの鳴き声で鳴く その鳴く間 一定時間 ( ここでは 1 秒間 ) 画像が別のものに変わる <アニメーションの基礎 : タイマーについて> アニメーションは アプリケーションが指定する間 一定間隔でどんどん画像をおきかえ

MyEventHandler actionhandler = new MyEventHandler(); m.addeventhandler(actionevent.any, actionhandler); // レイアウト BorderPane を生成 / 設定します BorderPane bp

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;

Microsoft Word - keisankigairon.ch doc

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


Microsoft PowerPoint - prog11.ppt

< F2D8EA CE909482CC92EA82852E6A7464>

Microsoft PowerPoint prog1_doc2x.pptx

I. (i) Java? (A). Foo_Bar (B). G day (C). 999 (D). Golgo13 (ii)? (A). Java public (B). Java (C). Java JavaScript (D). Java C Java C (iii)? (A). Java (

< F2D A838B838D96402E6A7464>

Transcription:

Java/Swing について (2) 2005 年 10 月 11 日 海谷治彦 1

Adapterについて TextField TextArea Copy&Paste JList JComboBox JScrollPane レイアウトについて 目次 2

ソースコード 前回より抜粋 public class Listener1 { public static void main(string[] args){ JFrame jf=new JFrame("Hello"); jf.setsize(300, 100); JPanel panel=new JPanel(); jf.setcontentpane(panel); JButton button=new JButton("Up"); panel.add(button); CounterLabel counter=new CounterLabel(); panel.add(counter); button.addmouselistener(counter); jf.setvisible(true); public class CounterLabel extends JLabel implements MouseListener { private int c=0; CounterLabel(){ super(0+""); public void mouseclicked(mouseevent arg0) { public void mouseentered(mouseevent arg0) { public void mouseexited(mouseevent arg0) { public void mousereleased(mouseevent arg0) { public void mousepressed(mouseevent arg0) { c++; settext(c+""); 使ってないメソッドも記述しないといけないのは無駄, とはいえ Java の文法上省けない. 3

Adapter Listener を空実装してあるクラス コイツのサブクラスを作成すれば必要なメソッドのみオーバーライドすればよい. 一般に Listener を使うよりプログラムが短くなる. 詳細はマニュアルページを見て 4

public class Adapter1 { public static void main(string[] args) { JFrame frame=new JFrame(); frame.setsize(300,100); JPanel panel=new JPanel(); frame.setcontentpane(panel); ソース JButton button=new JButton("Up"); JLabel label=new JLabel("0"); panel.add(button); panel.add(label); MouseLabelAdapter adapter=new MouseLabelAdapter(label); button.addmouselistener(adapter); frame.setvisible(true); public class MouseLabelAdapter extends MouseAdapter { private JLabel label; private int counter=0; MouseLabelAdapter(JLabel label){ this.label=label; public void mousepressed(mouseevent e){ counter++; label.settext(counter+""); mousepressed 以外は実装していない.( スーパークラスで空実装されている ) 5

クラス図 6

JTextField 一行入力のための部品 初期化の方法はいろいろ 文字幅を指定 初期文字列を指定等 interface ActionListener によってエンターキー入力を検知できる. 7

例 1 8

例 2: 入力をラベルに渡す テキストを入力 エンターキーを押す 非常に安直にユーザーのテキスト入力を得られる. ( 多分, 標準入力を使うよりかなり楽 ) 9

JTextArea それ自身, 小さなテキストエディタのようなもの. 10

例 : Field 入力を Area に溜める 11

Copy&Paste はプログラミングが必要 public class ClipAdapter extends MouseAdapter { JButton copy; JButton paste; JTextArea area; ClipAdapter(JTextArea area, JButton copy, JButton paste){ this.area=area; this.copy=copy; this.paste=paste; public void mousepressed(mouseevent e){ JButton b=(jbutton)e.getsource(); if(b==copy){ area.copy(); else if(b==paste){ area.paste(); public class Text4 { public static void main(string[] args) { // 中略 JButton copy=new JButton("Copy"); JButton paste=new JButton("Paste"); JTextArea area=new JTextArea(10, 30); ClipAdapter clip=new ClipAdapter(area, copy, paste); copy.addmouselistener(clip); paste.addmouselistener(clip); panel.add(copy); panel.add(paste); panel.add(new JScrollPane(area)); frame.setvisible(true); 12

画面例 かっちょいいメニュー ( 例 : 左図 ) で Copy&Paste できるようにするには, それなりにコードをかかないといけない. とはいえ, ショートカットキーは有効. 13

JList 複数の選択肢を列挙するための部品. 単一選択, 複数選択の双方ができる. 今回は単一選択しか扱わない. 無論, 選択した項目を取り出せる. ListSelectionListener 14

例 15

例 16

JComboBox JList と用途は似ており, 項目選択に使える. 17

選択した項目を得られます 18

スクロールバー JScrollPane() クラスで包むとスクロール可能となる. ただし, なんでもスクロールできるわけでない. インタフェース Scrollable を実装した部品. もしくは, 望ましい サイズが設定されている部品. javax.swing.jcomponent.getpreferredsize() および setpreferredsize() メソッド参照. 19

スクロールできそうな部品 20

例 import javax.swing.*; public class Scroll2 { public static void main(string[] args) { JFrame frame=new JFrame(); frame.setsize(300,200); JTextArea area=new JTextArea(10,40); JScrollPane scroll=new JScrollPane(area); frame.getcontentpane().add(scroll); frame.setvisible(true); 包まないと下のようになる 21

部品のレイアウト制御 add() で追加された部品が, 左から右に追加されるだけでは芸がない. LayoutManager を実装したクラスを使って, いくつかのレイアウトを指定することができる. 残念ながら Swing 内のレイアウトの種類は多彩とは言い難い. 22

レイアウトの例 FlowLayout BorderLayout GridLayout 1 2 3 4 5 JPanel ではデフォルト CardLayout 西 北 中 南 東 東西南北中の範囲で位置指定可能 JFrame のデフォルト Pane はこのレイアウト 碁盤の目のようにつめる BoxLayout 1 111 スライドやトランプのように重ねて表示. 縦もしくは横一列に並べる. 23

レイアウト設定の手順 なんとかLayoutのインスタンスを作る. それを,setLayout() メソッドに与える. 本メソッドは Container クラスで定義されてる. 24

例 BorderLayout 25

例 GridLayout まぁ, ありがちの例だが 26

例 BoxLayout swing パッケージに含まれることに注意 27

例 Layout の入れ子 WEST には BoxLayout でボタンを縦に 9 個単純に並べた. NORTH には FlowLayout でボタンを 9 個単純に並べた. 直接ボタンを SOUTH にのせると一杯に広がる 全体は BorderLayout ( デフォルトのまま ) 28

ソース public class Layout5 { public static void main(string[] args) { JFrame frame=new JFrame(); frame.setsize(600, 400); JPanel panel=(jpanel)frame.getcontentpane(); // レイアウトはデフォの Border を利用 JPanel npanel=new JPanel(); // レイアウトはデフォルトの Flow を利用 JPanel wpanel=new JPanel(); wpanel.setlayout(new BoxLayout(wpanel, BoxLayout.Y_AXIS)); for(int i=0; i<3; i++) for(int j=0; j<3; j++){ npanel.add(new JButton(i+"x"+j)); wpanel.add(new JButton(i+"-"+j)); panel.add(npanel, BorderLayout.NORTH); panel.add(wpanel, BorderLayout.WEST); panel.add(new TextArea(20,40), BorderLayout.CENTER); panel.add(new JButton("push me"), BorderLayout.SOUTH); frame.setvisible(true); 29

レイアウトの無効化 既存のレイアウトは, 任意の場所にボタン等を配置することを許さない. ボタン等を任意配置したい場合は, レイアウト自体を無効化する必要がある. 無効化すると, 配置場所だけでなく, サイズも含めて, 手動で設定しないといけない ( ので少し面倒 ). 例題 : web page 参照 単にレイアウトを無効化 マウスに追従する部品 上記と ScrollPane の連携 30

まとめ CGI ページのような部品は一通り紹介した. これらの部品間にイベント送付の関係をつければ, そこそこ快適な入出力機能 ( ユーザーインタフェース ) が作成可能. 31