Java @ mock

テキストエディタ作成ver1.2

最終更新:

Bot(ページ名リンク)

- view
管理者のみ編集可

テキストエディタ作成ver1.2


Javaでテキストエディタ作成に挑戦してます。
作成の過程で学べたことをメモしておきます。

作ったファイルを置いておきますが、自己責任でお願いします。
全角文字の入ったパスにjarファイルを置くと動作しないかもしれません。
展開したフォルダ内のjarファイルをダブルクリックで動作すると思います。

テキストエディタ

ソース

機能
  • 新規
  • 開く
  • 上書き保存
  • 名前を付けて保存
  • 右端で折り返す
※texteditor.iniをいじると多少はテキストエディタの設定ができます。
textAreaWidth = 500 ←幅
textAreaHeight = 300 ←高さ
tabSize = 4 ←タブ時のスペース数
fontSize = 16 ←フォントの大きさ

変更点
  • 背景、文字、選択部分、キャレットの色フォントを変更
  • 多少設定できるようになった
  • 起動時にテキストエリアにフォーカスが当たるようになった
  • 右端で折り返す
これだけです。。。


改善点

  • enumを使った(ラベル・ニーモニック・アクションキー)
  • iniファイル読み込み成功
  • 右端で折り返した
  • テキストエリアにフォーカス
  • 文字が見やすくなった
  • java.awt.event.KeyEventクラスのフィールド定数を使った
  • クラスを分けた

気になる

  • 例外発生時にアラートを表示するようにしたい
  • 名前を付けて保存時に既にあるファイル名に保存する場合もアラートがほしい
  • フィールドのスコープが適正かどうかわからない
  • 検索機能はつけたい
  • クラス名のつけ方がわからない
  • クラス分けの基準がわからない
  • コメントがおかしいとこがたくさんあった
  • 背景や文字の色フォントなども設定できるようにしたい
  • ctrl + Sで保存したい → アクセラレータというものをつかうみたい

まなんだ

  • インターフェースを使えた
  • enumを使えた → 管理が楽になった
  • thisを理解してるか不安になったが、わかった
  • java.util.Propertiesを使えた
  • インターフェースが引数のメソッドには実装クラスオブジェクトを渡す。理解していないことに気づけた



テキストエディタ検索機能案

以下のプログラムで検索の実験(search.txtからJavaって文字を探す)
Search.java
import java.io.*;
class Search {
	
	public static void main([[String]] [] args) {
		try {
			FileReader in = new FileReader("search.txt");
			BufferedReader br = new BufferedReader(in);
			
			String line;
			[[while]] ((line = br.readLine()) != null) {
				String search = "Java";
				[[int]] index = -search.length();
				while (index != -1) {
					index = line.indexOf(search, index + search.length());
					System.out.print(index + " ");
				}
				System.out.println();
			}
			br.close();
			in.close();
		} catch (IOException e) {
			System.out.println(e);
		}
	}
}

以下のようなテキストファイルを用意した
search.txt
Javaという文字を検索するテストです。

StringのメソッドIndexOfを使えばできるか?
それとも違うものがJavaであるのか?

試行錯誤中です。

一行に二文字以上Javaという単語が出てきた場合のテストJavaJava

以上です


実行結果
C:\java>javac Search.java

C:\java>java Search
0 -1
-1
-1
9 -1
-1
-1
-1
8 28 32 -1
-1
-1
一応Javaって書いてある箇所の先頭のindexは取得できた?!これを使って検索機能なんとかならないか?
検索文字列が見つからなかった場合は-1が返ってくる

※java.util.regexのPattern、Matcherを使う方法がある?

添付ファイル
ウィキ募集バナー