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(); } }