目次へ

解答例 - 実習課題1 - 11.ダイアログ

(実習課題1)

以下のプログラムを作成しなさい。

  • ウィンドウに表示されるコンポーネントはリストと「追加」メニュー
  • リストには10以上の都市の名前がリストアップされている事。
  • 「追加」メニューを選択すると、追加内容を入力するためのモーダル・ダイアログを表示する。
  • 入力後に、ダイアログの「追加」ボタンを押すと、リストにその内容が追加されるようにする事。

解答例

/**
 * DialogFrame.java
 * TECHSCORE Javaユーザインタフェース11章 実習課題1
 *
 * Copyright (c) 2004 Four-Dimensional Data, Inc.
 */

package com.techscore.ui.chapter11.exercise1;

import java.awt.BorderLayout;
import java.awt.Frame;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.DefaultListModel;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JScrollPane;
import javax.swing.JTextField;

public class DialogFrame extends JFrame implements ActionListener {

    private JMenuItem addMenuItem;
    private JList list;
    private DefaultListModel listModel;

    public DialogFrame() {
        super("DialogFrame");
        setDefaultCloseOperation(EXIT_ON_CLOSE);

        JMenuBar menuBar = new JMenuBar();
        setJMenuBar(menuBar);
        JMenu addMenu = new JMenu("edit");
        menuBar.add(addMenu);

        String listItem[] =
            { "Sapporo", "Sendai", "Chiba", "Tokyo", "Shizuoka", "Nagoya", "Osaka", "Okayama", "Hiroshima", "Fukuoka" };
        listModel = new DefaultListModel();
        for (int i = 0; i < listItem.length; i++) {
            listModel.addElement(listItem[i]);
        }

        list = new JList(listModel);
        getContentPane().add(new JScrollPane(list));

        addMenuItem = new JMenuItem("add");
        addMenuItem.addActionListener(this);
        addMenu.add(addMenuItem);

        pack();
    }

    public void actionPerformed(ActionEvent event) {
        AddCityDialog dialog = new AddCityDialog(this);
        dialog.show();

        if (dialog.isButtonPressed()) {
            listModel.addElement(dialog.getInputCity());
        }
    }

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

}

class AddCityDialog extends JDialog implements ActionListener {

    private JTextField cityField;
    private boolean buttonPressed;

    public AddCityDialog(Frame owner) {
        super(owner, "add a city", true);

        cityField = new JTextField();
        getContentPane().add(cityField);
        JButton addButton = new JButton("add");
        addButton.addActionListener(this);
        getContentPane().add(addButton, BorderLayout.SOUTH);
        pack();
    }

    public boolean isButtonPressed() {
        return (buttonPressed);
    }

    public String getInputCity() {
        return (cityField.getText());
    }

    public void actionPerformed(ActionEvent e) {
        if (!cityField.getText().equals("")) {
            buttonPressed = true;
        }
        this.hide();
    }

}

↑このページの先頭へ

こちらもチェック!

PR
  • XMLDB.jp