2017-02-27 39 views
2

我是Codename One的全新手,一直在通過觀看各種教程等進行研究。但有一個基本概念,我似乎無法理解。通過代碼訪問來自GUIbuilder的靜態表格

當我在GUIBuilder中設計表單時,如何從代碼中引用表單?

I.e.我在UI Builder中設計了我的表單。現在在我的主要源代碼中,我想在表單中添加一個工具欄。在GUIBuilder內部,表格被稱爲「Main」,但是諸如Main.show(),Main.hide()等之類的語句不起作用。

我設法用

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

home.getToolbar().addCommandToOverflowMenu(edit); 

其中一期工程,但肯定必須有訪問形式的一種方式來獲得的形式是「進口」由於缺乏一個更好的詞直接,無需獲得當前活動實例?即類似於 Main.getToolbar().addCommandToOverflowMenu(edit);

回答

1

您可以覆蓋表單的beforeShow()postShow(),並只引用表示表單的參數。

要添加命令,建議您在beforeShow()方法中執行此操作,並且應該在postShow()中完成遠程數據獲取等長時間過程。

舉例來說,假設你的表單名稱是Main在GUI Builder中創建,您可以執行以下操作:

@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文件),因此,使用您的方法,我可以將靜態創建的表單分配給表單標識符,例如 私人形式的家; 保護無效postMain(最終表格f){ home = f; } 然後與我希望訪問的main.WHATEVER函數的主代碼進行交互? –

+0

這應該在'StateMachine.java'中完成,請勿觸摸'StateMachineBase.java'。可以通過在GUI Builder中選擇表單並切換到事件選項卡,然後單擊相應的按鈕,自動爲您生成'beforeShow()'和'postShow()'。 – Diamond