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"; }