目次へ

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

(実習課題3)

実習課題2のプログラムを改良しなさい。

  • 「削除」メニューを追加し、そのメニューを選択すると、削除するアイテムを選択するダイアログを表示する。そのダイアログは「JOptionPane」で作成する事。
  • (ヒント)「JOptionPane」の「showInputDialog」メソッドで引数が7つあるものを使用する。

解答例

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

package com.techscore.ui.chapter11.exercise3;

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

import javax.swing.DefaultListModel;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;

public class OptionPane2 extends JFrame implements ActionListener {

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

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

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

        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);
        cityMenu.add(addMenuItem);
        deleteMenuItem = new JMenuItem("delete");
        deleteMenuItem.addActionListener(this);
        cityMenu.add(deleteMenuItem);

        pack();
    }

    public void actionPerformed(ActionEvent e) {
        if (e.getSource() == addMenuItem) {
            String str = JOptionPane.showInputDialog("追加する都市名を入力して下さい。");
            if (str == null) { // キャンセルボタンを押したとき
                return;
            } else if (str.equals("")) { // 入力が無かったとき
                JOptionPane.showMessageDialog(null, "都市名が入力されていません。", "alert", JOptionPane.ERROR_MESSAGE);
            } else { // 正しく入力されていたとき
                listModel.addElement(str);
            }
        } else if (e.getSource() == deleteMenuItem) {
            Object obj =
                JOptionPane.showInputDialog(
                    null,
                    "削除する都市名を選んで下さい。",
                    "削除",
                    JOptionPane.PLAIN_MESSAGE,
                    null,
                    listModel.toArray(),
                    null);
            listModel.removeElement(obj);
        }
    }

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

}

↑このページの先頭へ

こちらもチェック!

PR
  • XMLDB.jp