JAVA入門後期⑦ JAVAのSwingの基本構造

Slides:



Advertisements
Similar presentations
オブジェクト指向 言語 論 第八回 知能情報学部 新田直也. 多相性(最も単純な例) class A { void m() { System.out.println( “ this is class A ” ); } } class A1 extends A { void m() { System.out.println(
Advertisements

独習JAVA Chapter 6 6.6 クラスの修飾子 6.7 変数の修飾子 結城 隆. 6.6 クラスの修飾 abstract インスタンス化できないクラス。1つまたは複数のサブクラスで 実装してはじめてインスタンス化できる。 final 継承されたくないことを明示する。これ以上機能拡張 / 変更でき.
オブジェクト指向 プログラミング 第二回 知能情報学部 新田直也. 講義計画(あくまで予定) 第 1 回 プログラミング言語の種類と歴史 第 2 回 eclipse の基本操作 第 3 回 eclipse のデバッグ機能 第 4 回 構造化プログラミングの復習 第 5 回 演習 第 6 回 構造化指向からオブジェクト指向へ.
Ver 準備 Java フォルダに移動して …… mkdir Swing Swing フォルダに移動して …… cp ~gundam/Java/Swing. コマンドプロンプト ( JDK ) でないと起動 しないので注意!!!
社会人学習講座 「Javaプログラミング概論」
GridLayout オブジェクト(省略)
         第9回 Swing.
情報処理 第7回.
Applet 岡部 祐典 鈴木 敬幸.
GUIコンポーネントの設定と配置 Creation and positioning of GUI components
JAVA GUIプログラミング 第6回 TextFieldとLabel.
アプレット (Applet)について.
Javaのインタフェース についての補足 2006年5月17日 海谷 治彦.
プログラミング演習3 第4回 ミニプロジェクト.
Javaレクチャー ーSwing入門ー.
第2回:Javaの変数と型の宣言 プログラミングII 2007年10月2日.
独習Java ・ 10.6  Hashtableクラス ・ 10.7  String Tokenizerクラス  12月12日    小笠原 一恵.
第14回 GUIの構成とイベント・ドリブン ~GUIを使ったプログラム(Ⅰ)~.
9 Microsoft Word(1).
JAVA GUIプログラミング 第5回 ボタンとそのイベント処理.
システムエンジニアリング演習 GUIの実現(3):Swing 11月20日.
社会人学習講座 「Javaプログラミング概論」
JavaBeans とJSP データベース論 第5回.
JSFによるWebアプリケーション開発 第6回
エンタープライズアプリケーション II 第7回 / 2006年7月9日
インタフェース プログラミング 第14回 インタフェース プログラミング第14回.
Bridge Pattern
アプレット プログラミング 第10回 アプレット プログラミング第10回.
第11回 GUI(グラフィカル・ユーザ・インターフェース)の設計
最短経路.
経営工学基礎演習a Word第1回目.
プログラミング演習3 第2回 GUIの復習.
JAVA入門後期⑨ JAVAのSwingのメニュー処理
プログラミング演習3 第3回 ミニプロジェクト.
オブジェクト指向基礎学習Ⅱ 平成19年6月20日 森田 彦.
アルゴリズムとデータ構造演習(6月24日) グラフィックス、その2 テキストフィールドで入力する チェックボックスで1つ以上指定する
ライブラリを利用したGUI の実現(2):Swing 11月12日
Java入門 13.5カラーの使用 13.6テキストの表示                  2003/12/12                   紺野憲一.
Java/Swingについて (2) 2005年10月11日 海谷 治彦.
独習JAVA 6.8 コンストラクタの修飾子 6.9 メソッドの修飾子 6.10 ObjectクラスとClassクラス 11月28日(金)
第15回独習Javaゼミ セクション14~15 発表者 直江宗紀.
プログラミング演習3 第3回 ミニプロジェクト.
ローカル変数とグローバル変数 ローカル変数  定義された関数内だけで使用できる変数 グローバル変数 プログラム全体で使用できる変数.
第6回 2007年6月1日 応用Java (Java/XML).
プログラミング演習3 第2回 GUIの復習.
Java/Swingについて (3) 2005年10月19日 海谷 治彦.
段落書式設定 段落とは: Enterキーを押すまでに入力した文字列や図などのまとまり
段落書式設定 段落とは: Enterキーを押すまでに入力した文字列や図などのまとまり
7.4 intanceof 演算子 7.5~7.9パッケージ 2003/11/28 紺野憲一
JAVA入門後期⑥ JAVAのAWTの基本構造 (レイアウトマネージャー、 ウインドウ型アプリケーション)
Java/Swingについて+ (4) 2005年10月26日 海谷 治彦.
オブジェクト指向言語論 第十一回 知能情報学部 新田直也.
プログラミング言語論 第十四回 理工学部 情報システム工学科 新田直也.
オブジェクト指向言語論 第十一回 知能情報学部 新田直也.
JAVA入門後期④ イベント、AWT、の基本構造、スレッド
システムエンジニアリング演習 GUIの実現(1):AWT 11月6日.
オブジェクト指向 プログラミング 第九回 知能情報学部 新田直也.
プログラミング言語論 第十三回 理工学部 情報システム工学科 新田直也.
Smart Graphic Layout トピック ステートメント 赤色の背景に画像を含む SmartArt グラフィック (中級)
オブジェクト指向言語論 第十二回 知能情報学部 新田直也.
C#プログラミング実習 第3回.
Javaによる Webアプリケーション入門 第4回
画面への描画 Graphics オブジェクト 紙 ペン Pen オブジェクト Brush オブジェクト 画面のピクセルをカプセル化
ソフトウェア制作論 平成30年11月28日.
GUI部品とイベント処理の例 マインスィーパもどきの作成 倉敷芸術科学大学 産業科学技術学部 梶浦文夫.
スライドの終わりまでテキストが繰り返しスクロールされます • スライドの終わりまでテキストが繰り返しスクロールされます •
サンプル見出し テキスト 1 行目 テキスト 2 行目 テキスト 3 行目 (中級) 図の背後でタイトルを移動させるアニメーション効果
JSFによるWebアプリケーション開発 第7回
5.基本API 5-1 レイアウト ウィジェットの並べ方を指定するには、 パレットのレイアウト(Layoutでは以下の8種類)を配置する。
計算機プログラミングI 第2回 2002年10月17日(木) 履習登録 複習 ライブラリの利用 (2.6-7) 式・値・代入 (2.6-8)
Presentation transcript:

JAVA入門後期⑦ JAVAのSwingの基本構造

Swingとは 1.Swing は、 GUI (Graphical User Interface) 用パッケージ   パッケージ名は javax.swing 2. AWT (Abstract Java Toolkit) で提供されていた GUI 機能   を強化   継承として実装されている   AWT コンポーネントは必須(swing パッケージ以外に   awt パッケージもインポートする必要がある) 3.Swingでは互換性が向上   AWT では 各 GUI 部品は、実行環境のウィンドウシステム   を利用していたため、互換性に問題があり、部品の多いアプリケーションは重たくなる( “heavyweight” と呼ばれる)   Swing は基本的には Java だけで書かれているので、互換   性が向上し、マシンリソースも少なくてむ( “lightweight” と   呼ばれる)

Swingアプリケーションの階層構造 1.Swing は三階層 ●トップレベルコンテナ(第一階層)   Frame: JFrameクラス   Dialog: JDialogクラス   Applet: JAppletクラス ●中間コンテナ(第二階層)   他のSwingコンポーネントを配置する為などに用いる   Panel: Jpanelクラス   Scroll pane: JScrollPaneクラス  など ●コンポーネント   個々の部品を表す   JButton, JComboBox, JTextField, JTextArea, JLabel, JFileChooser, JTable  など

Swingアプリケーション作成手順 1.パッケージ java.awt.*, javax.swing.* のインポート 2.トップレベルコンテナのクラスを継承しクラスを作成する 3.部品のインスタンス化   3.1 トップレベルコンテナのインスタンス化   3.2 中間コンテナのインスタンス化   3.3 コンポーネントのインスタンス化 4.コンポーネントの配置   4.1 中間コンテナにレイアウトマネージャーを登録   4.2 コンポーネントを配置 5.コンポーネントにアクションリスナーを登録

Swingアプリケーション作成手順 6.中間コンテナの配置 6.1 トップレベルコンテナからコンテントペインの取得   6.1 トップレベルコンテナからコンテントペインの取得   6.2 コンテントペインにレイアウトマネージャーを登録   6.3 コンテントペインに中間コンテナを配置 7.メニュー部品のインスタンス化   7.1 メニューバーのインスタンス化   7.2 メニューのインスタンス化   7.3 メニューアイテムのインスタンス化 8.メニューアイテムにアクションリスナーを登録 9.メニューバーをフレームに追加 10.トップレベルコンテナのセットアップ

Swingアプリケーション作成手順 11.イベント処理(アクションリスナー、マウスイベント、等)   各イベント処理用のインターフェースを実装するクラスを   作成 ●以上が Swing アプリケーションで必要な基本的道具   あるものは必須ではなく、あるものは複数を組み合わせて   使う。   例えば、   ・中間コンテナは必ずしも必要ではなく、トップレベルコンテ  ナに直接コンポーネントを配置しても良い   ・レイアウトマネージャーは複数組み合わせることがある

簡単な例 import java.awt.*; import javax.swing.*; public class HelloSwing extends JFrame {   // 部品はプライベートで宣言しておく private JFrame frame; private JLabel label; // コンストラクター(別にメッソドを作成しても良い)   HelloSwing(String title) { // JFrameのインスタンス化 frame = new JFrame(title); // JLabelのインスタンス化 label = new JLabel("Hello Swing!");

簡単な例 // JFrameのコンテントペインの取得 Container con = frame.getContentPane(); // コンテントペインにJLabelを配置 // (直接配置、レイアウトマネージャーも未使用) con.add(label); // フレームのセットアップ frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE); frame.pack(); frame.setVisible(true); }

実施結果

簡単な例(解説) 1.パッケージのインポート import java.awt.*; import javax.swing.*; 2.トップレベルコンテナのクラスを継承しクラスを作成する public class HelloSwing extends JFrame {   // 部品はプライベートで宣言しておく private JFrame frame; private JLabel label; // コンストラクター(別にメッソドを作成しても良い)   HelloSwing(String title) {

簡単な例(解説) 3.部品のインスタンス化 // JFrameのインスタンス化 frame = new JFrame(title); // JLabelのインスタンス化 label = new JLabel("Hello World!"); 4.及び6.コンポーネントの配置 // JFrameのコンテントペインの取得 Container con = frame.getContentPane(); // コンテントペインにJLabelを配置 // (直接配置、レイアウトマネージャーも未使用) con.add(label);

簡単な例(解説) 10.トップレベルコンテナのセットアップ // フレームのセットアップ frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE); frame.pack(); frame.setVisible(true); } 順に、 ●クローズボタン(ウィンドウ右上の×ボタン)の処理(例ではプログラムを終了) ●推奨サイズでウィンドウを表示 ●ウィンドウを可視化 を行う

レイアウトマネージャー AWTと同じように、コンポーネントの配置方法を指定する方法 としてレイアウトマネージャーを使用する。 Swingでは、コンポーネントの他に、中間コンテナの配置もレイ アウトマネージャーで行う。 基本的に、レイアウトマネージャーは、AWTのものを利用してい る。 (Swingで幾つか追加されたものはあるが、滅多に使わない。) デフォルトは、AWTの時と同じFlowLayoutである。

レイアウトマネジャー(抜粋) 名前 説明 FlowLayout 左上から順に詰めていく BorderLayout 上下左右と中央の位置に最大5つの配置 CardLayout 同じ大きさのコンポーネントを重ね合わせて配置 GirdLayout 格子状に配置 GirdBagLayout 格子状に配置、柔軟な配置指定可能

FlowLayout (復習) ●左上から順に詰めていくように配置   書式: FlowLayout(int alignment, int hgaps, int vgaps)   alignment : コンポーネントの配置位置 設定位置は以下。    ・ FlowLayout.CENTER  行内で中央揃え    ・ FlowLayout.RIGHT    行内で右揃え    ・ FlowLayout.LEFT   行内で左揃え    ・ FlowLayout.TRAILING  行内で右端揃え    ・ FlowLayout.LEADING  行内で左端揃え   hgaps : コンポーネントの水平方向の間隔   vgaps : コンポーネントの垂直方向の間隔

FlowLayout (復習) デフォルトの設定 con.setLayout(new FlowLayout()); は con.setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5) と同じこと。

BoaderLayout (復習) ●コンポーネントを中央を中心にして、東西南北に配置   書式: BoaderLayout(int hgaps, int vgaps)    hgaps:水平方向の間隔    vgaps:垂直方向の間隔   指定の方法例:    con.setLayout(new BoaderLayout(5, 5));    Button bt1 = new Button(“button-North”);    con.add(bt1, BoaderLayout.NORTH ); North West Center East South

BoaderLayout (復習) 配置の位置 設定名 北 “North” または、BorderLayout.NORTH 中央 “Center”または、BorderLayout.CENTER 南 “South” または、BorderLayout.SOUTH 東 “East” または、BorderLayout.EAST 西 “West” または、BorderLayout.WEST

GridLayout (復習) ●コンポーネントを指定された配列の格子状に配置 書式:   書式:    GridLayout(int rows, int colums int haps, int vgaps)    rows : 行の数    colums : 列の数    haps : 水平方向の間隔    vgaps : 垂直方向の間隔   配置される順番はaddメソッドの順に左上から右方向に配置   「行数×列数」>コンポーネントの場合、不足分は空き   「行数×列数」<コンポーネントの場合、列数が自動的に増加

レイアウトマネージャー使用例 import java.awt.*; import javax.swing.*; public class HelloSwing extends JFrame {   // 部品はプライベートで宣言しておく private JFrame frame; private JLabel label; private JButton button; // コンストラクター(別にメッソドを作成しても良い)   HelloSwing(String title) { // JFrameのインスタンス化 frame = new JFrame(title); // JLabelのインスタンス化 label = new JLabel("Hello Swing!");

レイアウトマネージャー使用例 // JButtonのインスタンス化 button = new JButton("OK"); // JFrameのコンテントペインの取得 Container con = frame.getContentPane(); // コンテントペインにJLabel,JButtonを配置 con.setLayout(new FlowLayout()); con.add(label); con.add(button); // フレームのセットアップ frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE); frame.pack(); frame.setVisible(true); }

実行結果

中間コンテナ コンポーネントを直接トップレベルコンテナに配置するのではな く、幾つかのコンポーネントを一旦纏めで配置しておき、更に、 その幾つかの纏まったものをトップレベルコンテナに配置する、 といった二段構えのレイアウトを行うことが出来ます。 その中間的な纏め役をおこなうのが、中間コンテナです。 中間コンテナの例  JPanel: コンポーネントを纏める一般的なクラス  JScrollPane: コンポーネントに付随してスクロールバー等を           追加します

中間コンテナ使用例 import java.awt.*; import javax.swing.*; public class HelloSwing extends JFrame {   // 部品はプライベートで宣言しておく private JFrame frame; private JPanel panel; private JScrollPane scroll; private JLabel label; private JButton button; private JTextArea textArea; // コンストラクター(別にメッソドを作成しても良い)   HelloSwing(String title) { // JFrameのインスタンス化 frame = new JFrame(title);

中間コンテナ使用例 textArea = new JTextArea( "テキストが入力できます", 10, 30); // JScrollPane のインスタンス化 scroll = new JScrollPane(textArea); scroll.setVerticalScrollBarPolicy( JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); scroll.setPreferredSize( new Dimension(500, 250)); // JPanelのインスタンス化 panel = new JPanel(); // JLabelのインスタンス化 label = new JLabel("Hello Swing!");

中間コンテナ使用例 // JButtonのインスタンス化 button = new JButton("OK"); // コンポーネントの追加 panel.setLayout(new FlowLayout()); panel.add(label); panel.add(button); // JFrameのコンテントペインの取得 Container con = frame.getContentPane(); // コンテントペインにJPanel, JScrollPaneを配置 con.setLayout(new BorderLayout()); con.add(panel, BorderLayout.NORTH); con.add(scroll, BorderLayout.CENTER);

中間コンテナ使用例 // フレームのセットアップ frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE); frame.pack(); frame.setVisible(true); }

実行結果