Java @ mock

テキストエディタソースver1.1

最終更新:

Bot(ページ名リンク)

- view
管理者のみ編集可

テキストエディタソースver1.1

TextEditor.java


import java.awt.Dimension;
import java.awt.HeadlessException;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;

/**
 * テキストエディタのメインクラスです
 *
 * @author mock
 * @version 1.1
 */
public class TextEditor extends JFrame implements ActionListener {

	/**
	 * serialVersionUID
	 */
	private static final [[long]] serialVersionUID = 1L;

	/**
	 * テキストエリア
	 */
	private static JTextArea textArea;

	/**
	 * メニューバー
	 */
	private static JMenuBar menuBar = new JMenuBar();

	/**
	 * ファイル選択
	 */
	private static JFileChooser fileChooser = new JFileChooser();

	/**
	 * コンストラクタ
	 *
	 * @throws HeadlessException
	 */
	TextEditor() throws HeadlessException {
		super();
		setVisible(true);
		setTitle(Constants.UNDIFINED_TITLE);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

		// メニューバーの作成
		createMenuBar();
		// テキストエリアの作成
		createTextArea(Constants.TEXT_AREA_WIDTH, Constants.TEXT_AREA_HEIGHT);

		pack();
	}

	/**
	 * mainメソッドです
	 *
	 * @param args
	 */
	public static void main([[String]][] args) {
		new TextEditor();
	}

	/**
	 * メニューバーを作成するメソッドです
	 */
	private void createMenuBar() {
		getRootPane().setJMenuBar(menuBar);

		// ファイル(F)
		JMenu menuFile = new JMenu(Constants.MENU_FILE_LABEL);
		menuFile.setMnemonic(Constants.MENU_FILE_MNEMONIC);
		menuBar.add(menuFile);

		// ファイル(F)>新規(N)
		JMenuItem menuItemNew = new JMenuItem(Constants.MENU_ITEM_NEW_LABEL);
		menuItemNew.setMnemonic(Constants.MENU_ITEM_NEW_MNEMONIC);
		menuItemNew.setActionCommand(Constants.ACTION_COMMAND_NEW);
		menuItemNew.addActionListener(this);
		menuFile.add(menuItemNew);

		// ファイル(F)>開く(O)
		JMenuItem menuItemOpen = new JMenuItem(Constants.MENU_ITEM_OPEN_LABEL);
		menuItemOpen.setMnemonic(Constants.MENU_ITEM_OPEN_MNEMONIC);
		menuItemOpen.setActionCommand(Constants.ACTION_COMMAND_OPEN);
		menuItemOpen.addActionListener(this);
		menuFile.add(menuItemOpen);

		// ファイル(F)>上書き保存(S)
		JMenuItem menuItemSave = new JMenuItem(Constants.MENU_ITEM_SAVE_LABEL);
		menuItemSave.setMnemonic(Constants.MENU_ITEM_SAVE_MNEMONIC);
		menuItemSave.setActionCommand(Constants.ACTION_COMMAND_SAVE);
		menuItemSave.addActionListener(this);
		menuFile.add(menuItemSave);

		// ファイル(F)>名前を付けて保存(A)
		JMenuItem menuItemSaveAs = new JMenuItem(
				Constants.MENU_ITEM_SAVE_AS_LABEL);
		menuItemSaveAs.setMnemonic(Constants.MENU_ITEM_SAVE_AS_MNEMONIC);
		menuItemSaveAs.setActionCommand(Constants.ACTION_COMMAND_SAVE_AS);
		menuItemSaveAs.addActionListener(this);
		menuFile.add(menuItemSaveAs);

		// ヘルプ(H)
		JMenu menuHelp = new JMenu(Constants.MENU_HELP_LABEL);
		menuHelp.setMnemonic(Constants.MENU_HELP_MNEMONIC);
		menuBar.add(menuHelp);

		// ヘルプ(H)>バージョン情報(A)
		JMenuItem menuItemVersion = new JMenuItem(
				Constants.MENU_ITEM_VERSION_LABEL);
		menuItemVersion.setActionCommand(Constants.ACTION_COMMAND_VERSION);
		menuItemVersion.setMnemonic(Constants.MENU_ITEM_VERSION_MNEMONIC);
		menuItemVersion.addActionListener(this);
		menuHelp.add(menuItemVersion);
	}

	/**
	 * テキストエリアを作成するメソッドです
	 *
	 * @param width
	 *            テキストエリアの幅
	 * @param height
	 *            テキストエリアの高さ
	 */
	private void createTextArea([[int]] width, int height) {
		textArea = new JTextArea();
		JScrollPane scrollPane = new JScrollPane(textArea);
		scrollPane.setPreferredSize(new Dimension(width, height));
		getContentPane().add(scrollPane);
	}

	/*
	 * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
	 */
	@Override
	public void actionPerformed(ActionEvent e) {
		String actionCommand = e.getActionCommand();
		if (actionCommand.equals(Constants.ACTION_COMMAND_NEW)) {
			newFile();
		} else if (actionCommand.equals(Constants.ACTION_COMMAND_OPEN)) {
			openFile();
		} else if (actionCommand.equals(Constants.ACTION_COMMAND_SAVE)) {
			save();
		} else if (actionCommand.equals(Constants.ACTION_COMMAND_SAVE_AS)) {
			saveAs();
		} else if (actionCommand.equals(Constants.ACTION_COMMAND_VERSION)) {
			showVersionInfo();
		}
	}

	/**
	 * 「ファイル(F)>新規(N)」選択時に処理を行うメソッドです
	 */
	private void newFile() {
		fileChooser.setSelectedFile(null);
		fileChooser.setName(Constants.UNDIFINED_TITLE);
		setTitle(Constants.UNDIFINED_TITLE);
		textArea.setText("");
	}

	/**
	 * 「ファイル(F)>開く(O)」選択時に処理を行うメソッドです
	 */
	private void openFile() {
		try {
			if (fileChooser.showOpenDialog(this) == JFileChooser.APPROVE_OPTION) {
				File selectedFile = fileChooser.getSelectedFile();
				FileReader fileReader = new FileReader(selectedFile);
				textArea.read(fileReader, null);
				fileReader.close();
				setTitle(fileChooser.getName(selectedFile));
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	/**
	 * 「ファイル(F)>上書き保存(S)」選択時に処理を行うメソッドです
	 */
	private void save() {
		// ファイルが既に開かれている場合
		if (fileChooser.getSelectedFile() != null) {
			writeFile();
			[[return]];
		}
		saveAs();
	}

	/**
	 * 「ファイル(F)>名前を付けて保存(A)」選択時に処理を行うメソッドです
	 */
	private void saveAs() {
		// ファイルダイアログ「保存」が選択された場合
		if (fileChooser.showSaveDialog(this) == JFileChooser.APPROVE_OPTION) {
			writeFile();
			File selectedFile = fileChooser.getSelectedFile();
			setTitle(fileChooser.getName(selectedFile));
		}
	}

	/**
	 * 「ヘルプ(H)>バージョン情報(A)」選択時に処理を行うメソッドです
	 */
	private void showVersionInfo() {
		JOptionPane.showMessageDialog(this, Constants.VERSION, "version",
				JOptionPane.INFORMATION_MESSAGE);
	}

	/**
	 * fileChooserで選択されているファイルを保存するメソッドです
	 */
	private void writeFile() {
		try {
			FileWriter fileWriter = new FileWriter(fileChooser
					.getSelectedFile());
			fileWriter.write(textArea.getText());
			fileWriter.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

Constants.java


/**
 * 定数を定義するクラスです。
 *
 * @author mock
 *
 */
public class Constants {

	/*
	 * アプリケーションプロパティ
	 */

	/**
	 * テキストエリアの幅
	 */
	public static final int TEXT_AREA_WIDTH = 300;

	/**
	 * テキストエリアの高さ
	 */
	public static final int TEXT_AREA_HEIGHT = 300;

	/**
	 * 新規のタイトル名
	 */
	public static final String UNDIFINED_TITLE = "title";

	/**
	 * バージョン
	 */
	public static final String VERSION = "ver1.1";

	/*
	 * メニューラベル・メニューアイテムラベル
	 */

	/**
	 * ファイル(F)メニューのラベル
	 */
	public static final String MENU_FILE_LABEL = "ファイル(F)";

	/**
	 * ファイル(F)>新規(N)メニューアイテムのラベル
	 */
	public static final String MENU_ITEM_NEW_LABEL = "新規(N)";

	/**
	 * ファイル(F)>開く(O)メニューアイテムのラベルです。
	 */
	public static final String MENU_ITEM_OPEN_LABEL = "開く(O)";

	/**
	 * ファイル(F)>上書き保存(S)メニューアイテムのラベル
	 */
	public static final String MENU_ITEM_SAVE_LABEL = "上書き保存(S)";

	/**
	 * ファイル(F)>名前を付けて保存(A)メニューアイテムのラベル
	 */
	public static final String MENU_ITEM_SAVE_AS_LABEL = "名前を付けて保存(A)";

	/**
	 * ヘルプ(H)メニューのラベルで
	 */
	public static final String MENU_HELP_LABEL = "ヘルプ(H)";

	/**
	 * ヘルプ(H)>バージョン情報(A)メニューアイテムのラベル
	 */
	public static final String MENU_ITEM_VERSION_LABEL = "バージョン情報(A)";

	/*
	 * メニューニーモニック・メニューアイテムニーモニック
	 */

	/**
	 * ファイル(F)メニューのニーモニック
	 */
	public static final [[char]] MENU_FILE_MNEMONIC = 'F';

	/**
	 * ファイル(F)>新規(N)メニューアイテムのニーモニック
	 */
	public static final char MENU_ITEM_NEW_MNEMONIC = 'N';

	/**
	 * ファイル(F)>開く(O)メニューアイテムのニーモニックです。
	 */
	public static final char MENU_ITEM_OPEN_MNEMONIC = 'O';

	/**
	 * ファイル(F)>上書き保存(S)メニューアイテムのニーモニック
	 */
	public static final char MENU_ITEM_SAVE_MNEMONIC = 'S';

	/**
	 * ファイル(F)>名前を付けて保存(A)メニューアイテムのニーモニック
	 */
	public static final char MENU_ITEM_SAVE_AS_MNEMONIC = 'A';

	/**
	 * ヘルプ(H)メニューのニーモニックで
	 */
	public static final char MENU_HELP_MNEMONIC = 'H';

	/**
	 * ヘルプ(H)>バージョン情報(A)メニューアイテムのニーモニック
	 */
	public static final char MENU_ITEM_VERSION_MNEMONIC = 'A';

	/*
	 * アクションコマンドキー
	 */

	/**
	 * ファイル(F)>新規(N)メニューアイテムのアクションコマンドキー
	 */
	public static final String ACTION_COMMAND_NEW = "NEW";

	/**
	 * ファイル(F)>開く(O)メニューアイテムのアクションコマンドキー
	 */
	public static final String ACTION_COMMAND_OPEN = "OPEN";

	/**
	 * ファイル(F)>上書き保存(S)メニューアイテムのアクションコマンドキー
	 */
	public static final String ACTION_COMMAND_SAVE = "SAVE";

	/**
	 * ファイル(F)>名前を付けて保存(A)メニューアイテムのアクションコマンドキー
	 */
	public static final String ACTION_COMMAND_SAVE_AS = "SAVE_AS";

	/**
	 * ヘルプ(H)>バージョン情報(A)メニューアイテムのアクションコマンドキー
	 */
	public static final String ACTION_COMMAND_VERSION = "VERSION";
}
ウィキ募集バナー