質問: x + y; //zをデータベースに登録する //次はaかbを選択してほしいので、画面にaとbという名前のボタン2つを配置させる。 //aならばz*2を、bならばz/2をデータベースに新たに登録する } } ``` 例えば上記のようなプログラムを作りたかったとします。 これをコマンドプロンプトで実行するときは、もちろんjava Mainです。 データベース登録処理とかは今回はどうでもいいのですが、 このような、GUI表示とは関係ない処理はMainクラスに書いて、 且つメインクラス視点で物事が進んでいくようにプログラムを書きたいです。 どうやって書いたらいいでしょうか? アドバイスなどいただけましたら幸いです。 どうかよろしくお願いいたします ### 追記 回答してくださった方のお話を参考に、初心者なりに色々と考えてみました。 Mainクラスと、JavaFXクラスを別スレッドにして、 例えば、ボタンが押されるのを待っている状態ならば、 JavaFXクラスではボタンを表示しておいて、ボタンが押されたら特定の変数が変化するようにしておいて、 Mainクラスでは、特定の変数が変化するまで、Whileループで待っているという状態にしたら、 目的の動作は得られるのでしょうか? マルチスレッドにしないと、Mainクラスがwhileループに入った段階で、その処理につきっきりになるのか、GUIのボタンを押すことができなくなってしまいました。 このやり方で、達成できるのか、それと問題があるのかどうかを教えてください
回答: > > 基本的にGUIクラスが視点になってプログラムが動いていく > > GUIクラスが主人公で進んでいくような感じ > > 計算するメソッドを持つ側のクラスが主人公になって進むような > > プログラムの書き方はできないでしょうか? > > > ズバリ簡単に言うと、それは**ゲーム**の方法論ですね。 もちろん、質問者の方はゲーム自体を作りたいわけではないでしょう。 しかし、**イベントドリブン**でなく、GUIに使われるのではなく、 むしろGUIを使うというのは、まさに**ゲームのGUI**の使い方です。 たとえば、ゲームでイベントが起こると、ウィンドウが出たりだとか、 ゲームではゲームの流れが主人公で、それに合わせてGUIを使っていますよね。 だから、「**JavaFX ゲーム**」などで検索して、**ゲーム開発の手法**を学びます。 そして、その手法を作りたいものに応用すればいいわけです。 イメージとしては、ボタンやウィンドウなど**GUIの部品を自作**して、 ゲームのメインループから、それを呼び出して使う感じになると思います。 しかし、ビジネスソフトでそういう作り方は主流ではないですよね。 なぜ主流ではないかというと、**手間が掛かりすぎる**からです。 もしかしたら、GUIを上手く使うことで、 操作感が向上するジャンルも、本当はあるのかもしれません。 でも、多くの場合、ボタンなどのGUIは固定しておいて、 素直にイベントドリブンにした方が、**実装コストが低い**から、 ビジネスアプリでは主流になっているわけです。 また、GUIの記述がきゅうくつに感じるなら、いっそGUIを捨ててしまい、 **CLI**でやる方法もあると思います。事前に決めておける選択肢は、 設定ファイルやDSLに外出しすることで、けっこう頑張れると思います。 | UI種類 | CLI | ビジネスGUI | ゲームGUI | | --- | --- | --- | --- | | 実装コスト | 低 | 中 | 高 | | UI自由度 | 低 | 中 | 高 | さて、ここまでの選択肢を整理すると、上の三つになります。 どれも**一長一短**なので、作りたい物と、 掛けられるコストの兼ね合いで選択してください。