Java - AWT


■ページ目次

Top

■GUIについて

Top

■はじめてのGUIプログラミング

Top
■ウィンドウ(フレーム)を表示する
Top
■例題
  1. つぎのサンプル・アプリケーションAwt01.javaを作成・実行してください。
    1. import java.awt.*;
    2. public class Awt01 {
    3. Frame frame;
    4. Awt01() {
    5. frame = new Frame("フレーム");
    6. frame.setSize(200, 100);
    7. frame.setVisible(true);
    8. }
    9. public static void main(String[] args) {
    10. Awt01 awt01 = new Awt01();
    11. }
    12. }

    □ 実行結果

    
    
Top

■AWT のレイアウトマネージャー

Top
■レイアウトマネージャを使わない場合
Top

■GUIを構成するためのクラス群

Top
■コンポーネント(Component)
Top
■コンテナ(Container)
Top
■ウィンドウ
Top
■ダイアログ
Top
■パネル
■例題
  1. つぎのサンプル・アプリケーションPanel01.javaを作成・実行してください。
    1. import java.awt.*;
    2. public class Panel01 {
    3. Frame frame;
    4. Panel panel1, panel2;
    5. Button[] button = new Button[5];
    6. Panel01() {
    7. frame = new Frame("フレーム");
    8. panel1 = new Panel();
    9. panel2 = new Panel();
    10. for (int i = 0; i < button.length; i++) {
    11. button[i] = new Button("ボタン" + (i + 1));
    12. if (i <= 2) {
    13. panel1.add(button[i]);
    14. } else {
    15. panel2.add(button[i]);
    16. }
    17. }
    18. frame.add(panel1, BorderLayout.NORTH);
    19. frame.add(panel2, BorderLayout.SOUTH);
    20. frame.pack();
    21. frame.setVisible(true);
    22. }
    23. public static void main(String[] args) {
    24. Panel01 panel01 = new Panel01();
    25. }
    26. }

    □ 実行結果

    
    
Top
■基本的なGUI部品
Top
■例題
  1. つぎのGUI部品を使ったアプリケーションAwt11.javaを作成・実行してください。
    1. import java.awt.*;
    2. public class Awt11 {
    3. Frame frame;
    4. Panel[] panel = new Panel[9];
    5. CheckboxGroup checkboxGroup;
    6. Choice choice;
    7. List list;
    8. Awt11() {
    9. frame = new Frame("フレーム");
    10. for (int i = 0; i < panel.length; i++) {
    11. panel[i] = new Panel();
    12. frame.add(panel[i]);
    13. }
    14. panel[0].add(new Button("ボタン"));
    15. checkboxGroup = new CheckboxGroup();
    16. panel[1].add(new Checkbox("りんご", checkboxGroup, true));
    17. panel[1].add(new Checkbox("すいか", checkboxGroup, false));
    18. panel[1].add(new Checkbox("バナナ", checkboxGroup, false));
    19. panel[2].add(new Checkbox("りんご", true));
    20. panel[2].add(new Checkbox("すいか", false));
    21. panel[2].add(new Checkbox("バナナ", false));
    22. choice = new Choice();
    23. choice.add("りんご");
    24. choice.add("すいか");
    25. choice.add("バナナ");
    26. panel[3].add(choice);
    27. panel[4].add(new Label("ラベル"));
    28. list = new List(3, true);
    29. list.add("りんご");
    30. list.add("すいか");
    31. list.add("バナナ");
    32. panel[5].add(list);
    33. panel[6].add(new Scrollbar());
    34. panel[7].add(new TextArea("テキスト・エリア", 4, 32));
    35. panel[8].add(new TextField("テキスト・フィールド", 32));
    36. frame.setLayout(new GridLayout(3, 3));
    37. frame.pack();
    38. frame.setVisible(true);
    39. }
    40. public static void main(String[] args) {
    41. Awt11 awt11 = new Awt11();
    42. }
    43. }

    □ 実行結果

    
    
Top
■GUI版商品管理クライアント
  1. 商品管理システムのTestProductをGUIで実現するアプリケーション"GUIProduct.java"を作成してください。
    1. // 1801
    2. // package application;
    3. import java.awt.*;
    4. // 商品システムGUIクライアント・アプリケーションです。
    5. public class GUIProduct {
    6. private Frame frame;
    7. private Panel northPanel, westPanel, centerPanel, eastPanel, southPanel;
    8. private Label codeLabel, nameLabel, priceLabel, discountLabel, messageLabel;
    9. private TextField codeField, nameField, priceField, discountField;
    10. private TextArea messageArea;
    11. private Button searchButton, updateButton, deleteButton, resetButton, exitButton;
    12. private String code;
    13. private String name;
    14. private int price;
    15. private String supplierId;
    16. private String message;
    17. public GUIProduct() {
    18. frame = new Frame("商品情報");
    19. northPanel = new Panel();
    20. westPanel = new Panel();
    21. centerPanel = new Panel();
    22. eastPanel = new Panel();
    23. southPanel = new Panel();
    24. westPanel.setLayout(new GridLayout(0, 1));
    25. centerPanel.setLayout(new GridLayout(0, 1));
    26. searchButton = new Button("検索");
    27. northPanel.add(searchButton);
    28. updateButton = new Button("新規/更新");
    29. northPanel.add(updateButton);
    30. deleteButton = new Button("削除");
    31. northPanel.add(deleteButton);
    32. resetButton = new Button("取消");
    33. northPanel.add(resetButton);
    34. exitButton = new Button("終了");
    35. northPanel.add(exitButton);
    36. codeLabel = new Label("商品コード:");
    37. codeField = new TextField(8);
    38. westPanel.add(codeLabel);
    39. centerPanel.add(codeField);
    40. nameLabel = new Label("商品名:");
    41. nameField = new TextField(30);
    42. westPanel.add(nameLabel);
    43. centerPanel.add(nameField);
    44. priceLabel = new Label("定価:");
    45. priceField = new TextField(8);
    46. westPanel.add(priceLabel);
    47. centerPanel.add(priceField);
    48. discountLabel = new Label("割引率:");
    49. discountField = new TextField(8);
    50. westPanel.add(discountLabel);
    51. centerPanel.add(discountField);
    52. messageLabel = new Label("メッセージ:");
    53. messageArea = new TextArea();
    54. // southPanel.add(messageLabel);
    55. southPanel.add(messageArea);
    56. frame.add(northPanel, BorderLayout.NORTH);
    57. frame.add(westPanel, BorderLayout.WEST);
    58. frame.add(centerPanel, BorderLayout.CENTER);
    59. frame.add(eastPanel, BorderLayout.EAST);
    60. frame.add(southPanel, BorderLayout.SOUTH);
    61. frame.setSize(480, 320);
    62. frame.setVisible(true);
    63. }
    64. public static void main(String[] args) {
    65. GUIProduct gp = new GUIProduct();
    66. }
    67. }

    □ 実行結果

    
    
Top
■実習
  1. 「名前」を入力し、「占う」ボタンをクリックしたら、「占い結果」を出すようなアプリケーション"Uranai01.java"を作成してください。 なお、GUI部品はつぎのものとしてください。
    (*) 今回は、部品を作成してフレームに配置するだけです。
    つぎのGUI部品はオプションとします。余裕があれば配置してください。
    1. import java.awt.*;
    2. public class Uranai01 {
    3. Frame frame;
    4. Panel panelN, panelW, panelC, panelE, panelS;
    5. Label nameLabel, birthdayLabel;
    6. TextField name;
    7. CheckboxGroup sex;
    8. Checkbox mail, femail;
    9. Choice birthmonth;
    10. Button uranau, clear, owari;
    11. TextArea kekka;
    12. Uranai01() {
    13. frame = new Frame( "占い" );
    14. // ここにコードを記述してください。
    15. frame.pack();
    16. frame.setVisible(true);
    17. }
    18. public static void main(String[] args) {
    19. Uranai01 Uranai01 = new Uranai01();
    20. }
    21. }

    □ 実行結果

    
    
Top

■メニューを作成する

Top
■実習
  1. Uranai01を、フロー・レイアウトに配置してください。("Uranai011.java")


  2. Uranai01を、カード・レイアウトに配置してください。("Uranai012.java")


  3. Uranai01のボタン部分のみを、カード・レイアウトに配置してください。("Uranai013.java")


  4. Uranai01につぎのようなメニューを追加してください。("Uranai02.java")

  5. □ 実行結果

    
    
Top

■描画を行う

Top
■描画の動作を確認する
Top
■プログラムから再描画を行う
Top
■Graphicsクラスのメソッド
Top
■グラフィックに関連するクラス
■例題
  1. つぎの"Draw01.java"を入力・実行してください。
    表示されたフレームを、他のウィンドーで隠したり、フレームのサイズを変えてみてください。
    1. import java.awt.*;
    2. public class Draw01 extends Canvas {
    3. Frame frame;
    4. int cnt = 0;
    5. public void paint(Graphics g) {
    6. cnt++;
    7. g.drawString(String.valueOf(cnt), 20, 20);
    8. }
    9. Draw01() {
    10. frame = new Frame("フレーム");
    11. setSize(200, 50);
    12. frame.add(this, BorderLayout.NORTH);
    13. frame.pack();
    14. frame.setVisible(true);
    15. }
    16. public static void main(String[] args) {
    17. Draw01 draw01 = new Draw01();
    18. }
    19. }


  2. つぎの"Draw03.java"を入力・実行してください。
    1. import java.awt.*;
    2. public class Draw03 extends Canvas {
    3. Frame frame;
    4. public void paint(Graphics g) {
    5. g.drawString("Hello", 20, 20);
    6. g.drawLine(10, 10, 100, 50);
    7. }
    8. Draw03() {
    9. frame = new Frame("フレーム");
    10. setSize(200, 50);
    11. frame.add(this, BorderLayout.NORTH);
    12. frame.setSize(200, 100);
    13. frame.setVisible(true);
    14. }
    15. public static void main(String[] args) {
    16. Draw03 draw03 = new Draw03();
    17. }
    18. }
■実習
  1. 上記"Draw01.java"をつぎのように改造してください。("Draw011.java")
    1. 1秒ごとに数字を自動的にカウントアップする。
    1. import java.awt.*;
    2. public class Draw011 extends Canvas {
    3. Frame frame;
    4. int cnt = 0;
    5. public void paint(Graphics g) {
    6. while (true) {
    7. cnt++;
    8. g.drawString(String.valueOf(cnt), 20, 20);
    9. // ここにコードを記述してください。
    10. }
    11. }
    12. Draw011() {
    13. frame = new Frame("フレーム");
    14. setSize(200, 50);
    15. frame.add(this, BorderLayout.NORTH);
    16. frame.pack();
    17. frame.setVisible(true);
    18. }
    19. public static void main(String[] args) {
    20. Draw011 draw011 = new Draw011();
    21. }
    22. }
  2. 下の実行結果になるようなアプリケーション"Draw34.java"を作成してください。
    1. import java.awt.*;
    2. public class Draw34 extends Canvas {
    3. Frame frame;
    4. public void paint(Graphics g) {
    5. // ここにコードを記述してください。
    6. }
    7. Draw34() {
    8. frame = new Frame("フレーム");
    9. setSize(400, 300);
    10. frame.add(this, BorderLayout.NORTH);
    11. frame.setSize(400, 300);
    12. frame.setVisible(true);
    13. }
    14. public static void main(String[] args) {
    15. Draw34 draw34 = new Draw34();
    16. }
    17. }

    □ 実行結果

    
    
    
    
  3. フレーム上で、ボールが左右に動き、壁で跳ね返って往復するアプリケーション"Ball01.java"を作成してください。
    作成の概要はつぎのとおりです。
    1. import java.awt.*;
    2. public class Ball01 extends Canvas {
    3. Frame frame;
    4. int x = 0;
    5. int dx = 2;
    6. int ballSize = 30;
    7. public void paint(Graphics g) {
    8. // ここにコードを記述してください。
    9. }
    10. Ball01() {
    11. frame = new Frame("ボール");
    12. setSize(300, 200);
    13. frame.add(this);
    14. frame.pack();
    15. frame.setVisible(true);
    16. }
    17. public static void main(String[] args) {
    18. Ball01 ball01 = new Ball01();
    19. }
    20. }

    □ 実行結果

    
    
  4. "Ball01.java"を改造して、ボールが上下左右どちらにも動くように改造してください。("Ball02.java")


Top

inserted by FC2 system