「テキストエディタソースver1.0」の編集履歴(バックアップ)一覧はこちら
テキストエディタソースver1.0 - (2009/03/08 (日) 13:16:35) の1つ前との変更点
追加された行は緑色になります。
削除された行は赤色になります。
*テキストエディタ ソース 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();
}
}
*テキストエディタ ソース 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();
}
}
表示オプション
横に並べて表示:
変化行の前後のみ表示: