|
今テキストエディター+タグ一覧というHTMLEditorというのを作っています。 今のところウィンドウ(javax.swing.JFrame)には以下を配置しています。 メニューバー(java.awt.MenuBar) テキストエディターなどで使うメニューを配置 ポップアップメニュー(java.awt.PopupMenu) テキストエディターで使うメニューを配置 タブ(javax.swing.JTabbedPane) タグをジャンルごとに一覧配置する予定 テキストエリア(import java.awt.TextArea) テキストエディター
ソースファイルが長くなると編集しづらいだろうから、以下のようなクラスに分けて作ることにしました。 HTMLEditorクラス プログラム本体 以下クラスの実体化など MenuSystemクラス メニューバー作成・メニューが選ばれた時の処理など PopupSystemクラス ポップアップメニュー作成など TabShowクラス タブ作成など TextEditorクラス テキストエリアの作成・ウィンドウリサイズ時のテキストエリア・タブのサイズや位置の変更など
HTMLEditorクラスにあるmain関数でHTMLEditorクラスのインスタンスeditorを作り、他のパーツを同じウィンドウに配置すべく、editorをその他クラスのコンストラクターの引数に渡しています。 ポップアップメニューのメニューはメニューバーのものの一部であるため、ポップアップメニューのアクションリスナーはメニューバーのものにしています。
ウィンドウはサイズ変更可であり、もちろんウィンドウサイズが変わればそれに合わせて配置しているもののサイズも変更します。 TextEditorクラスにコンポーネントリスナーを作り、ウィンドウのリサイズが行われた時にテキストエリア・タブのリサイズ等を行っています。 また、タブはメニューから表示/非表示を切り換えられるようにする予定です。 これはメニューのアイテムリスナーで切り替えを読み取り、TabShowクラスに作っているboolean型のshowをfalseに代えてから、TextEditorクラスでウィンドウリサイズ時と同じような動作をさせる予定です。
それから、タブサイズをサイズ変更可にしたいため、javax.swing.JSplitPaneを使ってみたいと思っています。 そのとき、それ用のクラスを新たに作ろうと考えています。
メニューには開く・保存などがあり、それらの動作を別クラスに分けてしまうかソースが長くなってしまってもMenuSystemクラスに書くべきか、決めかねています。
こんな感じでクラス分け等してよかったのかなどが気になり質問させてもらいました。 長文になってしまいましたが、どうかよろしくお願いします。
|