- ベストアンサー
描写した文字をドラッグしたい
- Javaでテキストフィールドに入力された文字を描写し、クリックして表示するプログラムを作成しました。今度は描写した文字をドラッグして移動したいです。また、文字の修正やドラッグされた文字を配列に入力する機能も追加したいです。そしてウインドウサイズを変更すると文字が消える問題や、描写の再処理についての対処方法が分かりません。初めに作成した文字入力のプログラムとなっています。
- Javaで作成したプログラムでは、テキストフィールドに入力された文字を描写し、クリックすると表示される機能が実装されています。しかし、描写した文字をドラッグして移動する方法が分かりません。また、文字の修正やドラッグされた文字を配列に入力する機能も追加したいと考えています。さらに、ウインドウサイズを変更すると文字が消えてしまう問題があります。この問題についての対処方法を教えてください。
- Javaでテキストフィールドに入力された文字を描写し、クリックして表示するプログラムを作成しました。しかし、描写した文字をドラッグして移動する方法がわかりません。また、文字の修正やドラッグされた文字を配列に入力する機能も追加したいです。さらに、ウインドウサイズを変更すると描写した文字が消えてしまう問題もあります。この問題に対する対処方法を教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
毎回、自己流で回答して申し訳ないのです。 しかし、質問者様からアプリケーション設計のことについてまったく聞いていないので自己流で作るしかない状況です。 まずは、アプリケーションの設計から考えるべきではないでしょうか。 単に動けばいいではダメなのです。 アプリケーションなんてとくにそうですよね。 質問のプログラムがうまくいかないのはそもそもに正しい設計がなされてないからです。 1つでもコンポーネントを実装するならば、キャンバスを配置し、その中で描画をするべきです。 次に前の回答でも言ったようにコンポーネントの機能を正しく使いましょう。 そして、アプレットはブラウザで動かすためのものであり、コンポーネントを配置するのならパネルに配置しましょう。 そもそもAWT,swingとAppletは全くの別物です。 普通は、アプレットかフレームを継承したクラスをメインクラスにし、メインクラスは各パネルの親クラスであり、パネル遷移だけを行うよう設計します。 まず決めるべきはレイアウトです。 ・既存のレイアウトで既存のコンポーネントを配置(大抵はグループレイアウトか外部ライブラリのレイアウトを使います) この方法で作ったアプリケーションは信頼性が高い。 さまざまな機能が使えるのでつくるのが楽。 ・既存のコンポーネントを使わず、イメージを描画する(イベント処理は座標を判定して区別します) 自由な配置ができ、自由に部品の形を決められる。 AWT,swingにはないような機能を持ったコンポーネントが作れる。 前者がアプリケーション向き、後者がゲーム向きのレイアウト設計ですが、結局どっちの方法をとるかは好みの問題です。 次に機能ごとにクラスで分けることです。 そもそもに単一クラスのアプリケーションなんてありえませんし、バグが出ることが明らかなので使いたくありません。 基本として、画面の表示と処理の部分は分けましょう。 これがごっちゃになっているとバグの原因になりますので。 こういった原因で起こったバグは設計を見直さなくては直りません。 (大半は作り直すことになる) 最後に処理の流れです。 仕様書と言われるものを書きましょう。クラス図や状態遷移図など正規表現で書くのが理想ですが、自分ひとりだけでつくるならメモ書き程度 でもよいでしょう。 これがなければ ・しばらく経ってからソースを見てもわけがわかならい ・バグが起きてもどこで起きてるか特定しづらい ・多人数で作業する際は作り方がバラバラになってしまう ・そもそもにどういったものを作るのかはっきりしない などなど他にも様々な弊害があると思いますよ。 自分は学生なのでこの程度しかのアドバイスできません。。。 もっと正確なことを知りたいのならば、専門家の方からアドバイスをいただくのも手かもしれませんね。 まぁ、プランがしっかりしてないと相談にも乗ってくれないと思いますが。。。
その他の回答 (1)
- zozy
- ベストアンサー率60% (20/33)
今回の場合はAWTではなくswingを使いましょう。 既存のコンポーネントを使っているのなら、わざわざコマンドライン引数をわたしたり、キーイベントで文字を入力する処理を書く必要はありません。 実行時にテキストフィールドをクリックすれば、そのまま文字を入力を入力できます。 そもそも、そのために用意されたコンポーネントです。 ちなみに test1.setText("abc"); とすれば、test1の中の文字列を"abc"に変更でき、 test1.getText(); とすれば、test1の中の文字列"abc"を取り出せます。 前回の質問での最初の回答にswingで作った、テキストボックスに書いた文字列にドラッグで範囲を指定するとコンボボックスに格納するプログラムがあるはずなので、まずはそれを参考にしてください。
お礼
解答ありがとうございます。 あれから色々試しテキストの表示はできるようになりました。 ただ以前の質問からの続きにもなりますがテキストのドラッグかつ直線の描写を同一画面でするのが目標です。 実際にあるペイントソフトのように文字も書くことが出来れば直線も描写できたりしますし、文字の再編集も出来たりできればと思っています。 基本的に文字列を入力してもらい表示します。表示したウインドウと別に編集ウインドウを作り、そこでの編集(編集とはドラッグした言葉に対する追加情報を入力し文字の上に表示するなど)を表示ウインドウに表示していけたらと思います。表示画面で出来ることは文字のドラッグです。移動はしません。 というのがしたいことの一部です。 とりあえず今困っていることはどうやって線の描写と文字の表示を同じ画面で行えるのかです。 お願いします。
お礼
解答ありがとうございます。本当に毎回感謝しています。 説明が足りない等のことは重々承知していました。それに毎回答えていただいてありがとうございます。 何度も答えていただいたおかげでわからないことだらけですが少しずつ創り出すことが出来ています。始めはスタートすら出来ませんでした。 言われた通り丁度闇雲に作らず、しっかり仕様を考えてました。こうすると作りやすくなりそうですね。