目次へ

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

(実習課題4)

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

  • 「カット」「コピー」「ペースト」の機能を追加しなさい。
  • 「DefaultEditorKit」を利用する事。

解答例

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

package com.techscore.ui.chapter15.exercise4;

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.JMenu;
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;
import javax.swing.text.DefaultEditorKit;

public class CutCopyPasteEditor extends JFrame implements ActionListener {

    private JTextPane textPane;
    private JMenuItem insertMenu;

    public CutCopyPasteEditor() {
        super("CutCopyPasteEditor");
        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);

        JMenu editMenu = new JMenu("edit");
        JMenuItem cutMenu = new JMenuItem(new DefaultEditorKit.CutAction());
        cutMenu.setText("cut");
        editMenu.add(cutMenu);
        JMenuItem copyMenu = new JMenuItem(new DefaultEditorKit.CopyAction());
        copyMenu.setText("copy");
        editMenu.add(copyMenu);
        JMenuItem pasteMenu = new JMenuItem(new DefaultEditorKit.PasteAction());
        pasteMenu.setText("paste");
        editMenu.add(pasteMenu);

        menuBar.add(editMenu);

        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/exercise4/4dd.gif"));
            }
        }
    }

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

}
package com.techscore.ui.chapter15.exercise4;

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

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

import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
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;
import javax.swing.text.DefaultEditorKit;
import javax.swing.text.StyledEditorKit;

public class StyledEditor extends JFrame implements ActionListener {

    private JTextPane textPane;
    private JMenuItem insertMenu;

    public StyledEditor() {
        super("Simple Editor");
        setDefaultCloseOperation(EXIT_ON_CLOSE);

        JMenuBar menuBar = new JMenuBar();

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

        //edit menu
        JMenu editMenu = new JMenu("edit");
        JMenuItem cutMenu = new JMenuItem(new DefaultEditorKit.CutAction());
        cutMenu.setText("cut");
        editMenu.add(cutMenu);
        JMenuItem copyMenu = new JMenuItem(new DefaultEditorKit.CopyAction());
        copyMenu.setText("copy");
        editMenu.add(copyMenu);
        JMenuItem pasteMenu = new JMenuItem(new DefaultEditorKit.PasteAction());
        pasteMenu.setText("paste");
        editMenu.add(pasteMenu);
        menuBar.add(editMenu);

        Box box = new Box(BoxLayout.Y_AXIS);

        //checkbox
        Box childBox = new Box(BoxLayout.X_AXIS);
        JCheckBox boldFont = new JCheckBox(new StyledEditorKit.BoldAction());
        boldFont.setText("bold");
        childBox.add(boldFont);
        JCheckBox italicFont = new JCheckBox(new StyledEditorKit.ItalicAction());
        italicFont.setText("italic");
        childBox.add(italicFont);
        box.add(childBox);

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

        getContentPane().add(box);
        pack();
    }

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

    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.equals(components[1])) {
                textPane.insertComponent(new JSlider());
            } else if (component.equals(components[2])) {
                textPane.insertComponent(new JTextField(100));
            } else if (component.equals(components[3])) {
                textPane.insertComponent(new JLabel("label"));
            }
        }
    }

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

}

↑このページの先頭へ

こちらもチェック!

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