2012-04-30 7 views
0

私はメニュー画面を作成しようとしており、それをさらに動的に作成できるようにしたい。表示されるメニュー項目を処理するためのMenuItemヘルパークラスを作成し、名前、イメージを読み取り、次の状態(後で処理するもの)を設定します。私が知りたいことは、どのようにして特定の後続のスクリーンを作成できますか(それらはすべて、私のScreenクラスのいくつかのサブクラスになります)?ファイルから親クラスのサブクラスを作成する

特定のオブジェクトをmenuItemに渡す最も効率的な方法は何ですか?私はそれぞれの可能なScreenを事前に作成してから、シリアライズされた形式で読み込んだり、動的に作成したりする必要がありますか?私はリテラル文字列 "new SubClass(...)"を読み込んでそれを実行するだけの簡単なことができればと思っていましたが、それについてはわからないのです。他の提案は素晴らしいでしょう!

+1

map.put("screen1", new ScreenDisplayer() { @Override void displayScreen(Screen mainScreen) { // TODO display screen 1 }); // same for all the other commands 

そして、 "メニュー項目" をクリックすると、マップから表示画面を取得し、それを呼び出しをあなたが言っていることから何かを理解することができないので、いくつかのコード(SSCCE http://sscce.orgを投稿しても良い)や少なくとも疑似コードを書くこと。 –

+0

スクリーンクラスコードを掲示できますか? – eabraham

+1

あなたはどのようなアプリを開発していますか? AWTアプリケーション?スイング? Webapp? –

答えて

0

私が正しく理解していれば、テキストファイルからStringコマンドを読み取り、このコマンドに基づいて画面を表示するメカニズムが必要です。

したがって、「display screen」コマンドのインターフェイスをインターフェイスに抽出します。たとえば、次のように続いて

public interface ScreenDisplayer { 
    void displayScreen(Screen mainScreen); 
} 

Map<String, ScreenDisplayer>構築:投稿してみ

String command = selectedMenuItem.getCommand(); 
ScreenDisplayer displayer = map.get(command); 
displayer.displayScreen(mainScreen); 
+0

基本的に、私はその時点でどのように指定するのですか?各コマンド?私が探しているのは、サブクラスのコンストラクタを特定し、その引数を動的に(できればStringから)与えるだけです。

 new,./CatchEm/imgs/new.png,new constructor,1 load,./CatchEm/imgs/load.png,load constructor,1 options,./CatchEm/imgs/options.png,options constructor,1 exit,./CatchEm/imgs/exit.png,null,0 
は、セパレータとしてコンマを使用して読み込んだテキストファイルの例です。 – tmoss

+0

2番目の点検では、私は間違いなく問題を複雑にしています。私が探しているものは基本的に7つまたは8つのコマンドに集約することができます。したがって、おそらくScreenDisplayersを含む列挙型か、それらをすべて含む2番目のヘルパークラスですか?または、あなたは正しいです、マップはうまく動作します – tmoss

関連する問題