目次へ

解答例 - 実習課題3 - 15.テキスト・コンポーネント2

(実習課題3)

以下の簡易エディターを作成しなさい。

  • ウィンドウに含まれるコンポーネントは「JTextPane」から作成されるテキストエリア。
  • 「insert」メニューが選択されると、追加するコンポーネントまたはアイコンを選択するダイアログが表示される。コンポーネントは任意。
  • ダイアログで選択すると、現在のキャレットまたは選択領域にコンポーネントまたはアイコンを挿入する。

解答例

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

package com.techscore.ui.chapter15.exercise3;

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

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JSlider;
import javax.swing.JTextField;
import javax.swing.JTextPane;

public class SimpleEditor extends JFrame implements ActionListener {

    private JTextPane textPane;
    private JMenuItem insertMenu;

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

        textPane = new JTextPane();
        JScrollPane scroll =
            new JScrollPane(
                textPane,
                JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
                JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
        scroll.setPreferredSize(new Dimension(300, 200));
        getContentPane().add(scroll);

        JMenuBar menuBar = new JMenuBar();
        setJMenuBar(menuBar);
        insertMenu = new JMenuItem("insert");
        menuBar.add(insertMenu);
        insertMenu.addActionListener(this);

        pack();
    }

    String[] components = { "Button", "Slider", "TextField", "Label", "Icon" };

    public void actionPerformed(ActionEvent event) {
        Object component =
            JOptionPane.showInputDialog(
                this,
                "追加したいアイテムを選択して下さい",
                "SELECT ITEM",
                JOptionPane.INFORMATION_MESSAGE,
                null,
                components,
                components[0]);

        //選択されたコンポーネントを追加する。
        if (component != null) {
            if (component.equals(components[0])) {
                textPane.insertComponent(new JButton("button"));
            } else if (component == components[1]) {
                textPane.insertComponent(new JSlider());
            } else if (component == components[2]) {
                textPane.insertComponent(new JTextField(100));
            } else if (component == components[3]) {
                textPane.insertComponent(new JLabel("label"));
            } else if (component == components[4]) {
                textPane.insertIcon(
                    new ImageIcon("com/techscore/ui/chapter15/exercise3/4dd.gif"));
            }
        }
    }

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

}

↑このページの先頭へ

こちらもチェック!

PR
  • XMLDB.jp
  • シナジーマーケティング研究開発グループブログ