解答例 - 実習課題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);
}
}