Java @ mock

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

最終更新:

Bot(ページ名リンク)

- view
管理者のみ編集可

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


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
 *
 */
public class TextEditor extends JFrame implements ActionListener {

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

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

	/**
	 * メニューバー
	 */
	private JMenuBar menuBar;

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

	/**
	 * テキストエリアの幅
	 */
	private final [[int]] textAreaWidth = 300;

	/**
	 * テキストエリアの高さ
	 */
	private final int textAreaHeight = 300;

	/**
	 * 新規のタイトル名
	 */
	private final [[String]] undifinedTitle = "title";

	/**
	 * バージョン
	 */
	private final String version = "ver1.0";

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

		// メニューバーの作成
		createMenuBar();
		// テキストエリアの作成
		createTextArea(textAreaWidth, textAreaHeight);

		pack();
	}

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

	}

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

		// ファイル(F)
		JMenu menuFile = new JMenu("ファイル(F)");
		menuFile.setMnemonic('F');
		menuBar.add(menuFile);

		// ファイル(F)>新規(N)
		JMenuItem menuItemNew = new JMenuItem("新規(N)");
		menuItemNew.setMnemonic('N');
		menuItemNew.setActionCommand("NEW");
		menuItemNew.addActionListener(this);
		menuFile.add(menuItemNew);

		// ファイル(F)>開く(O)
		JMenuItem menuItemOpen = new JMenuItem("開く(O)");
		menuItemOpen.setMnemonic('O');
		menuItemOpen.setActionCommand("OPEN");
		menuItemOpen.addActionListener(this);
		menuFile.add(menuItemOpen);

		// ファイル(F)>上書き保存(S)
		JMenuItem menuItemSave = new JMenuItem("上書き保存(S)");
		menuItemSave.setMnemonic('S');
		menuItemSave.setActionCommand("SAVE");
		menuItemSave.addActionListener(this);
		menuFile.add(menuItemSave);

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

		// ヘルプ(H)
		JMenu menuHelp = new JMenu("ヘルプ(H)");
		menuHelp.setMnemonic('H');
		menuBar.add(menuHelp);

		// ヘルプ(H)>バージョン情報
		JMenuItem menuItemVersion = new JMenuItem("バージョン情報");
		menuItemVersion.setActionCommand("VERSION");
		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("NEW")) {
			newFile();
		} else if (actionCommand.equals("OPEN")) {
			openFile();
		} else if (actionCommand.equals("SAVE")) {
			save();
		} else if (actionCommand.equals("SAVEAS")) {
			saveAs();
		} else if (actionCommand.equals("VERSION")) {
			showVersionInfo();
		}
	}

	/**
	 * 「ファイル(F)>新規(N)」選択時に処理を行うメソッドです
	 */
	private void newFile() {
		fileChooser.setSelectedFile(null);
		fileChooser.setName(undifinedTitle);
		setTitle(undifinedTitle);
		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 (Exception e) {
			e.printStackTrace();
		}
	}

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

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

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

	/**
	 * fileChooserで選択されているファイルを保存するメソッドです
	 *
	 * @throws IOException
	 */
	private void writeFile() throws IOException {
		FileWriter fileWriter = new FileWriter(fileChooser.getSelectedFile());
		fileWriter.write(textArea.getText());
		fileWriter.close();
	}
}
ウィキ募集バナー