Presentation is loading. Please wait.

Presentation is loading. Please wait.

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

Similar presentations


Presentation on theme: "JAVA入門後期⑦ JAVAのSwingの基本構造"— Presentation transcript:

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

2 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” と   呼ばれる)

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

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

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

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

7 簡単な例 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!");

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

9 実施結果

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

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

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

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

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

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

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

17 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

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

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

20 レイアウトマネージャー使用例 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!");

21 レイアウトマネージャー使用例 // 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); }

22 実行結果

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

24 中間コンテナ使用例 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);

25 中間コンテナ使用例 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!");

26 中間コンテナ使用例 // 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);

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

28 実行結果


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

Similar presentations


Ads by Google