2017-02-27 5 views
2

私はコードネームワンの初心者です。さまざまなチュートリアルなどを見て勉強しています。しかし、私は理解できないような基本的なコンセプトがあります。コードを使用してGUIbuilderから静的フォームにアクセスする

私はGUIBuilderでフォームを設計するとき、私のコードからフォームをどのように参照しますか?

I.e. UI Builderでフォームを設計しました。今私の主なソースコードで、私はフォームにツールバーを追加したいと思います。 GUIBuilder内部では、フォームは「Main」と呼ばれますが、Main.show(),Main.hide()などの文は機能しません。

私は、フォームが動作

private Form home; 
... 
... 
home=Display.getInstance().getCurrent(); 
... 

home.getToolbar().addCommandToOverflowMenu(edit); 

を使用して、もっと良い言葉がないために、「インポート」を取得するために管理、しかし確実に、現在アクティブを取得することなく、直接フォームにアクセスする方法がなければなりませんインスタンス?すなわち、あなたは、フォームのbeforeShow()postShow()をオーバーライドし、ちょうどフォームを表すパラメータを参照することができ Main.getToolbar().addCommandToOverflowMenu(edit);

答えて

1

ような何か。

コマンドを追加するには、beforeShow()メソッドで行い、リモートデータフェッチのような長いプロセスはpostShow()で実行することをお勧めします。例えば

、のは、フォーム名がMainで、GUIビルダーで作成された、あなたは次の操作を行うことができましょう:

@Override 
protected void beforeMain(final Form f) { 
    f.removeAllCommands(); 

    Toolbar toolbar = new Toolbar(); 
    f.setToolbar(toolbar); 
    toolbar.setTitleComponent(new Label("My Form Name", "Title")); 
    toolbar.addCommandToOverflowMenu(edit); 
    toolbar.addCommandToRightBar(backCommand); 
    f.setBackCommand(backCommand); 

    ... 
} 

@Override 
protected void postMain(final Form f) { 
    //fetch remote data here 

    ... 
} 
+0

は、念のため、私は100%を理解し、あなたのコードをダイヤモンドに感謝GUIFormはStateMachineBase.javaファイルにあります。主なソースコードはSecureCom.java(私のプロジェクトのメインJavaファイル)にありますので、アプローチを使用して、フォーム識別子に などの静的に作成されたフォームを割り当てることができますプライベートフォームホーム; protected void postMain(最終フォームf){ home = f; } 次に、main.WHATEVER関数を使用してプライマリコードからフォームにアクセスしたいのですか? –

+0

これは 'StateMachine.java'で行うべきです、' StateMachineBase.java'に触れないでください。 'beforeShow()'と 'postShow()'はGUIビルダーでフォームを選択し、 'Events'タブに切り替えて、該当するボタンをクリックすることで自動的に生成されます。 – Diamond

関連する問題