目次へ

解答例 - 実習課題4 - 1.コレクション

(実習課題4)

  • 予め「Hashtable」クラスのインスタンスに、人の苗字をキー、名前をデータとして記憶させておく事。最低、5人分のデータを記憶させる事。
  • ウィンドウに表示されるコンポーネントは1つのラベルと、人数分のボタン。ボタンには「Hashtable」に記憶されているキーを表示させる事。
  • ボタンを押すと、そのキーに対応するデータをラベルに表示するようにする事。

解答例

package com.techscore.utility.chapter1.exercise4;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Hashtable;

import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.SwingConstants;

/**
 * HashtableExample.java
 * TECHSCORE Javaユーティリティ1章 実習課題4 
 *
 * Copyright (c) 2002 Four-Dimensional Data, Inc.
 */
public class HashtableExample extends JFrame implements ActionListener {

    private JButton SMAP[] =
        {
            new JButton("Kimura"),
            new JButton("Nakai"),
            new JButton("Inagaki"),
            new JButton("Kusanagi"),
            new JButton("Katori")};

    private JLabel label;

    private Hashtable table = new Hashtable();

    public HashtableExample() {
        super("Hashtable example");
        setDefaultCloseOperation(EXIT_ON_CLOSE);

        //Hashtableに値を追加

        table.put("Kimura", "Takuya");
        table.put("Nakai", "Masahiro");
        table.put("Inagaki", "Goro");
        table.put("Kusanagi", "Tsuyoshi");
        table.put("Katori", "Shingo");

        //名字を示すボタンを5つ追加

        Color backColor[] =
            { Color.green, Color.blue, Color.black, Color.yellow, Color.red };

        Color foreColor[] =
            { Color.black, Color.white, Color.white, Color.black, Color.white };

        Dimension size = new Dimension(150, 50);

        for (int i = 0; i < SMAP.length; i++) {
            SMAP[i].setBackground(backColor[i]);
            SMAP[i].setForeground(foreColor[i]);
            SMAP[i].setMinimumSize(size);
            SMAP[i].setPreferredSize(size);
            SMAP[i].setMaximumSize(size);
            SMAP[i].addActionListener(this);
        }

        //ボタンを配置

        Box topBox = new Box(BoxLayout.X_AXIS);
        getContentPane().add(topBox, BorderLayout.NORTH);

        topBox.add(Box.createHorizontalStrut(80));
        topBox.add(SMAP[0]);
        topBox.add(Box.createHorizontalGlue());
        topBox.add(SMAP[1]);
        topBox.add(Box.createHorizontalStrut(80));

        Box centerBox = new Box(BoxLayout.X_AXIS);
        getContentPane().add(centerBox, BorderLayout.CENTER);

        centerBox.add(Box.createHorizontalStrut(5));
        centerBox.add(SMAP[2]);
        centerBox.add(Box.createHorizontalGlue());
        centerBox.add(SMAP[3]);
        centerBox.add(Box.createHorizontalGlue());
        centerBox.add(SMAP[4]);
        centerBox.add(Box.createHorizontalStrut(5));

        //名前を表示するラベルを追加

        label = new JLabel("SMAP");
        label.setHorizontalAlignment(SwingConstants.CENTER);
        label.setPreferredSize(new Dimension(460, 50));
        getContentPane().add(label, BorderLayout.SOUTH);

        pack();

    }

    //押されたボタンに対応する名前がラベルに表示される
    public void actionPerformed(ActionEvent e) {

        String key = ((JButton) e.getSource()).getText();
        label.setText((String) table.get(key));

    }

    public static void main(String args[]) {
        new HashtableExample().setVisible(true);
    }

}

↑このページの先頭へ

こちらもチェック!

PR
  • XMLDB.jp