一種應用程式菜單的生成方法、裝置及應用系統的製作方法
2023-05-15 07:30:36
專利名稱:一種應用程式菜單的生成方法、裝置及應用系統的製作方法
技術領域:
本發明屬於計算機處理領域,尤其涉及一種應用程式菜單的生成方法、裝置及應
用系統。
背景技術:
為了便於用戶使用,應用程式都通過下拉式菜單向用戶提供功能入口,用戶通過 菜單選擇所需操作。 一般下拉菜單可以有多層,即支持子菜單。程式語言及軟體開發工具通 常提供各種圖形用戶界面(Gr即hical User Interface,GUI)控制項,其中包括窗口 (Frame) 對象等。通常窗口中包含或可以添加一個菜單欄,通過程式語言提供的的應用程式編程接 口 (Application Programming Interface, API),可以構造出下拉式的應用程式主菜單。
現在,常見的應用程式菜單的生成方法,包括 代碼法直接寫代碼,調用程式語言的API實現,這是最根本的實現方法; 開發工具法有些開發工具提供了可視化的界面編輯器,通過對控制項的滑鼠拖拽
和屬性設置,可以構造出應用程式的界面,然後由這些工具自動生成代碼。依賴開發工具生
成的代碼,通常可讀性很差,而且只能做到單向的,也就是說只能從可視化的設計界面生成
代碼,如果手工修改了代碼,反向就不能正確回到可視化設計界面了。因此,該方法生成的
界面維護時需要依賴使用的開發工具。 不管是"代碼法",還是"開發工具法"得到的菜單,如果要進行維護、二次開發,都 需要將菜單的原始碼進行修改,並重新編譯。而對於非開源的商業項目,菜單的原始碼是 得不到的,因而不能根據需要對這些菜單進行維護、二次開發。另外,對採用"開發工具法" 得到的菜單進行維護、二次開發,還需要依賴原來使用的開發工具,以及程序的中間過程文 件。 綜上所述,按照現有的應用程式菜單的生成方法得到的菜單不支持二次開發、不 便於維護。
發明內容
本發明實施例的目的在於解決現有技術存在的問題,提供一種應用程式菜單的生 成方法,支持二次開發、維護方便。 本發明實施例是這樣實現的,一種應用程式菜單的生成方法,所述方法包括以下 步驟 讀取各菜單項的結構關係信息及菜單項屬性,所述菜單項屬性包括菜單項名稱和 操作對象; 根據讀取的結構關係信息及菜單項屬性依次生成菜單對象。 本發明實施例的另一目在於提供一種應用程式菜單的生成裝置,所述裝置包括
信息讀取單元,用於讀取各菜單項的結構關係信息及菜單項屬性,所述菜單項屬 性包括菜單項名稱和操作對象;以及
菜單項生成單元,用於根據讀取的結構關係信息及菜單項屬性依次生成菜單對 象。 本發明實施例的另一目在於提供一種應用系統,所述系統包括上述應用程式菜單 的生成裝置。 在本發明實施例中,通過讀取到的各菜單項的結構關係信息及菜單項屬性來依次 生成菜單對象,實現了一種應用程式菜單的生成方法,支持二次開發、維護方便。
I I I I I I I I
l是本發 2是本發 3是本發 4是本發 5是本發 6是本發 7是本發 8是本發
明第一實施4 明第一實施4 明第一實施4 明第一實施4 明第二實施4 明第三實施4 明第四實施4 明第五實施4
例提供
例提供
例提供
例提供
例提供
例提供
例提供 昆祖
例提《
的應用程式菜單的生成方法的實現流程圖
的菜單的示意的樹狀對象模型的結構示意的步驟S102的實現流程的應用程式菜單的生成方法的實現流程圖
的應用程式菜單的生成方法的實現流程圖
的應用程式菜單的生成裝置的結構示意圖
的應用程式菜單的生成裝置的結構示意圖,
具體實施例方式
為了使本發明所要解決的技術問題、技術方案及有益效果更加清楚明白,以下結
合附圖及實施例,對本發明進行進一步詳細說明。應當理解,此處所描述的具體實施例僅僅 用以解釋本發明,並不用於限定本發明。 在本發明實施例中,通過讀取到的各菜單項的結構關係信息及菜單項屬性來依次 生成菜單對象,從而支持二次開發、維護方便。 本發明提供了一種應用程式菜單的生成方法、裝置和應用系統 所述方法包括讀取各菜單項的結構關係信息及菜單項屬性,所述菜單項屬性包 括菜單項名稱和操作對象; 根據讀取的結構關係信息及菜單項屬性依次生成菜單對象。
所述裝置包括 信息讀取單元,用於讀取各菜單項的結構關係信息及菜單項屬性,所述菜單項屬 性包括菜單項名稱和操作對象;以及 菜單項生成單元,用於根據讀取的結構關係信息及菜單項屬性依次生成菜單對 象。 所述應用系統包括所述應用程式菜單的生成裝置。
實施例一 圖1示出了本發明第一實施例提供的應用程式菜單的生成方法的實現流程,詳述 如下 在步驟S101中,讀取各菜單項的結構關係信息及菜單項屬性,該菜單項屬性包括 菜單項名稱和操作對象; 其中,菜單項即為菜單中的一個選項,菜單項可以進一步分為操作項、主菜單和子菜單,如圖2所示,具體地 主菜單,其下包括一個或多個操作項和/或子菜單的菜單項,應用程式對應的菜
單可以包括並列的一個或多個主菜單,圖2中的"菜單A"、"菜單g"為主菜單; 操作項,從屬於某個主菜單或子菜單,對應應用程式所提供的一個操作,圖2中的
"操作1 a)"、"操作2 "即為操作項; 子菜單,從屬於某個主菜單或子菜單下,其下又包括一個或多個操作項和/或子 菜單的菜單項,圖2中的"子菜單S"即為子菜單,當然,該"子菜單S"還可以包括子菜單, 只是該例子中沒有給出。 在本發明實施例中,可以採用樹狀對象模型記載各菜單項的結構關係信息及菜單 項屬性,樹狀對象模型中各結點間的關係表示各菜單項的結構關係,在各結點中存儲相應 的菜單項屬性。如圖3所示,除了結點M外,該樹中的一個結點表示一個菜單項,結點M表示 該菜單的入口,結點M與應用程式窗口菜單欄對應。結點M的子結點為主菜單,該樹中的葉 子結點即對應操作項,該樹中除主菜單對應結點和結點M外的非葉子結點即對應子菜單。
在步驟S102中,根據讀取的結構關係信息及菜單項屬性依次生成菜單對象。
在本發明實施例中,讀取到的結構關係信息及菜單項屬性為樹狀對象模型,即可 以採用深度優先遍歷方式或廣度優先遍歷方式遍歷樹狀對象模型的各結點,根據遍歷到的 結點中存儲的菜單項屬性生成菜單對象,並將生成的菜單對象添加到該結點的父結點對應 的菜單對象中。這樣,在遍歷該樹狀對象模型中的結點時,根據其結點中存儲的菜單屬性生 成菜單對象;在遍歷完該樹狀對象模型中的所有結點後,即生成所需的應用程式菜單。
具體地,如圖4所示,步驟S102具體包括 在步驟S1021中,根據遍歷方式取出樹狀對象模型的一個結點,並根據該結點中 包含的菜單項屬性生成菜單對象; 在步驟S1022中,將生成的菜單對象添加到所取出結點的父結點對應的菜單對象 中; 在步驟S1023中,判斷是否遍歷完所讀取到的樹狀對象模型的所有結點,如果是 則進入步驟S1024,否則進入步驟S1021 ;
在步驟S1024中,結束。 其中,在步驟S1021中,如果取出的是樹狀對象模型的根結點M,則建立菜單欄對 象,在步驟S1022中,由於其不存在父結點,因而不做任何處理,然後,執行步驟S1023。
在本發明實施例中,通過讀取到的各菜單項的結構關係信息及菜單項屬性來依次 生成菜單對象,對菜單的編輯、修改,是對各菜單項的結構關係信息及菜單項屬性進行,不 需要改變應用程式菜單的生成方法,因此維護方便;對需要支持二次開發的場景,公布各菜 單項的結構關係信息及菜單項屬性,根據需要對公布的各菜單項的結構關係信息及菜單項 屬性進行修改,就可以方便地支持二次開發。 本領域普通技術人員可以理解實現上述實施例方法中的全部或部分步驟是可以
通過程序來指令相關的硬體來完成,所述的程序可以在存儲於一計算機可讀取存儲介質
中,所述的存儲介質,如ROM/RAM、磁碟、光碟等,該程序用來執行如下步驟 讀取各菜單項的結構關係信息及菜單項屬性,該菜單項屬性包括菜單項名稱和操
作對象;
根據讀取的結構關係信息及菜單項屬性依次生成菜單對象。
實施例二 為了便於用戶提供各菜單項的結構關係信息和菜單項屬性,以及對生成的菜單進 行二次開發、維護等,圖5示出了本發明第二實施例提供的應用程式菜單的生成方法的實 現流程,該應用程式菜單的生成方法中的步驟S501、 S502分別與圖l所示的應用程式菜 單的生成方法中的步驟SIOI、 S102相同,與本發明第一實施例提供的方法的不同之處僅在 於,在步驟S501前,還包括各菜單項的結構關係信息及菜單項屬性解析步驟,具體為
在步驟S500中,解析讀取到的配置文件,得到各菜單項的結構關係信息及菜單項 屬性。 在本發明實施例中,採用配置文件,例如XML文件,來存儲所要生成的應用程式的 菜單結構及相關信息,配置文件採用預定義的規則來描述菜單項的結構關係及菜單項屬 性;採用成熟的第三方代碼,例如JDOM等,就可以將XML文件解析成樹狀的內存對象模型。 下面給出了對應圖2所示菜單的XML文件的示例
1 〃 mnemonic =' icon =
=〃 S〃 >
21 " mnemonic =
action
2N" icon =". action
〈Config> 〈Menus>
〈Me皿id
me皿l 〃 text 〈Me皿Item id
菜單A" mnemonic =〃 A" > 'actionl 〃 text = 〃操作
iconFilename. gif action = 〈Separator/> 〈Me皿id = 〃 subMe皿l
com. kingdee........Acitionl'
text = 〃子菜單S" mnemonic
〈Me皿Item id = 〃 action21〃 text
Y" icon ="..."
7 com. kingdee........Action2〃 />
〈! 一子菜單S的其它內容,省略一 〈Me皿Item id = 〃 action2N〃 text
com. kingdee........Action2N〃 />
〈/Menu>
〈! 一菜單A的其它內容,省略一〉 〈Me皿Item id = 〃 actionN" text
操作
操作
操作N'
icon
=〃 iconFilename.gif" action =〃 com. kingdee........AcitionN" /) 〈/Menu> 〈Me皿id=〃 me皿l〃 text:"菜單B' 〈! 一菜單B的內容,省略一〉 〈/Menu> 〈 ! 一多個一級菜單,省略一>
mrmmomc
7
〈/Me墜〉
〈/Config〉 其結點層次結構可以和圖2所示的菜單的層次結構一一對應,非常直觀。這是基 於JAVA語言的實現,相關概念說明如下 Me皿,菜單,它在邏輯上是菜單項和/或子菜單的組合,即對應上述主菜單和子菜 單,可以包含若干個菜單項、分隔線,也可以包含子菜單,菜單Me皿與javax. swing. JMenu 對應; Me皿Item,菜單項,用戶選中菜單項後會執行對應的一個操作,即對應上述操作
項,此操作稱為Action,菜單項Me皿Item與javax. swing. JMe皿Item對應; S印arator ,分隔線,可以把菜單中不同類型的菜單項分隔開,與avax. swing.
JS印arator對應。
菜單項屬性包括 text,菜單或菜單項上顯示的文字,即上述菜單項名稱;
icon,菜單項文字前面顯示的圖片; mnemonic,菜單或菜單項文字中某個字符加下劃線,表明鍵盤操作菜單的對應按 鍵; action,菜單項對應的操作,即上述操作對象,可以是應用程式開發者的代碼,可 以與javax. swing. Action接口對應,由action可以關聯到一個應用程式開發者定義的操 作,是菜單提供給用戶的功能。 其中,action屬性可以是一個類的全路徑,通過程式語言支持的反射機制,動態地 創建類的實例;分隔線S印arator並不是必需的,可以在步驟S502生成菜單對象時動態添 加到生成的菜單中,以分隔兩相鄰菜單項;菜單項屬性icon和mnemonic只是為顯示生成 的菜單時,能提供豐富的視覺效果而添加的屬性,並不是生成菜單必需的。mnemonic屬性, 對於JAVA語言,它會在顯示文字中找到相應的字符,並自動加上下劃線,如"Eile";找不到 相同的字符則沒有下劃線。我們在生成菜單時,可以判斷顯示文字中是否有mnemonic字符 (中文界面通常沒有),如果沒有,在顯示文字後面加上括號和字符,就像"文件(F)"。
當然,為提供豐富的視覺效果,菜單項屬性還可以根據需要包括其他的屬性,例如 操作需要彈出窗口的標誌等。 另外,菜單項的屬性中還可以考慮加上快捷鍵等其它需要的描述,並在生成菜單 時同時實現快捷鍵等。 進一步地,在具體實現時,除了上述格式,配置文件還可以採用其他的格式。 在本發明實施例中,採用配置文件提供各菜單項的結構關係信息及菜單項屬性,
對菜單的編輯、修改,是對配置文件進行。相對於其他形式而言,例如代碼等,在描述整個菜
單時,配置文件可以做到整體清楚、結構清皙、可讀性好,因此有維護方便的特點。 並且,對於需要支持二次開發的場景,只需要公布配置文件,對配置文件進行修
改,就可以方便地支持二次開發。
實施例三 為了便於生成菜單,除了操作項、主菜單和子菜單,菜單項還可以為分割線,圖6 示出了本發明第三實施例提供的應用程式菜單的生成方法的實現流程,詳述如下
在步驟S601中,解析讀取到的配置文件,得到包含各菜單項的結構關係信息及菜 單項屬性的樹狀內存對象模型; 在步驟S602中,根據遍歷方式取出樹狀對象模型的一個結點; 在步驟S603中,判斷該結點對應的菜單項是否為主菜單,如果是則執行步驟
S604,否則執行步驟S605 ; 在步驟S604中,根據該結點中包含的菜單項屬性構造主菜單對象,執行步驟
S611 ; 在步驟S605中,判斷該結點對應的菜單項是否為分割線,如果是則執行步驟 S606,否則執行步驟S607 ; 在步驟S606中,構造分割線對象,執行步驟S611 ; 在步驟S607中,判斷該結點對應的菜單項是否為子菜單,如果是則執行步驟 S608,否則執行步驟S609 ; 在步驟S608中,根據該結點中包含的菜單項屬性構造子菜單對象,執行步驟
S611 ; 在步驟S609中,判斷判斷該結點對應的菜單項是否為操作項,如果是則執行步驟 S610,否則執行步驟S612 ; 在步驟S610中,根據該結點中包含的菜單項屬性構造操作對象,執行步驟S611 ;
在步驟S611中,將構造的對象添加到其直接從屬的菜單欄對象、主菜單對象或子 菜單對象中,執行步驟S613 ;
在步驟S612中,生成菜單欄對象; 在步驟S613中,判斷是否遍歷完樹狀對象模型的所有結點,如果是則執行步驟 S614,否則返回步驟S602 ;
在步驟S614中,結束。 這裡,步驟S601中讀取到的配置文件可以為XML文件,然後採用成熟的第三方代 碼JDOM將XML文件解析成樹狀的內存對象模型;步驟S602中可以採用深度優先遍歷方式 或廣度優先遍歷方式遍歷該樹狀的內存對象模型;在步驟S604中,根據結點中包含的text 屬性構造主菜單對象,用text屬性設置該主菜單的名稱;在步驟S608中,根據結點中包 含的text屬性構造子菜單對象,用text屬性設置該子菜單的名稱;在步驟S610中,根據 結點中包含的text和action屬性構造操作對象,用text屬性設置該操作對象的名稱,而 action屬性是一個類的全路徑,通過程式語言支持的反射機制,動態地創建類的實例。
實施例四 圖7示出了本發明第四實施例提供的應用程式菜單的生成裝置,為了便於說明, 僅示出了與本發明實施例相關的部分。該應用程式菜單的生成裝置可以是內置於應用系統 中的軟體單元、硬體單元、或者軟硬體相結合的單元或者作為獨立的掛件集成到應用系統 中。其中 信息讀取單元701,讀取各菜單項的結構關係信息及菜單項屬性,該菜單項屬性包 括菜單項名稱和操作對象,菜單項即為菜單中的一個選項,菜單項可以進一步分為操作項、 主菜單和子菜單,採用樹狀對象模型記載各菜單項的結構關係信息及菜單項屬性,即信息 讀取單元701讀取到的結構關係信息及菜單項屬性為樹狀對象模型,其具體實現方式如上所述,不再贅述。 菜單項生成單元702,根據讀取的結構關係信息及菜單項屬性依次生成菜單對象, 可以採用深度優先遍歷方式或廣度優先遍歷方式遍歷樹狀對象模型的各結點並生成菜單 對象。 進一步地,菜單項生成單元702包括 對象生成模塊7021,根據遍歷方式取出樹狀對象模型的一個結點,並根據該結點 中包含的菜單項屬性生成菜單對象,其具體實現方式如上所述,不再贅述。
對象添加模塊7022,將生成的菜單對象添加到所取出結點的父結點對應的菜單對 象中,其具體實現方式如上所述,不再贅述。 判斷模塊7023,判斷是否遍歷完所讀取到的樹狀對象模型的所有結點,如果是則 結束,否則觸發對象生成模塊7021繼續遍歷下一個結點,其具體實現方式如上所述,不再 贅述。 本發明實施例提供的應用程式菜單的生成裝置可以實現為一段代碼,其作用是在 程序執行期,將讀取到各菜單項的結構關係信息及菜單項屬性轉化成程式語言API的調 用,生成菜單對象。對菜單的編輯、修改,是對各菜單項的結構關係信息及菜單項屬性進行, 不需要改變應用程式菜單的生成裝置,因此維護方便;對需要支持二次開發的場景,公布各 菜單項的結構關係信息及菜單項屬性,根據需要對公布的各菜單項的結構關係信息及菜單 項屬性進行修改,不需要改變應用程式菜單的生成裝置,就可以方便地支持二次開發。
並且,只要能得到各菜單項的結構關係信息及菜單項屬性,就可以根據本發明提 供的應用程式菜單的生成裝置生成對應的菜單,可以多次重用。
實施例五 為了便於用戶提供各菜單項的結構關係信息及菜單項屬性,圖8示出了本發明第 五實施例提供的應用程式菜單的生成裝置,該應用程式菜單的生成裝置包括圖7所示的應 用程序菜單的生成裝置中的信息讀取單元701和菜單項生成單元702,與本發明第四實施
例提供的裝置的不同之處僅在於,該應用程式菜單的生成裝置還包括 解析單元703,解析讀取到的配置文件,向信息讀取單元701輸出得到各菜單項的
結構關係信息及菜單項屬性。對於配置文件為XML文件的情況,解析單元703可以採用成
熟的第三方代碼,例如JDOM等,就可以將XML文件解析成樹狀的內存對象模型。 當然,對於其他形式的配置文件,或者根據實際需要進行適當改進。 在本發明實施例中,通過讀取到的各菜單項的結構關係信息及菜單項屬性來依次
生成菜單對象,實現了一種應用程式菜單的生成方法,支持二次開發、維護方便。 並且,進一步通過配置文件提供各菜單項的結構關係信息及菜單項屬性,解析配
置文件得到各菜單項的結構關係信息及菜單項屬性,便於用戶提供各菜單項的結構關係信
息和菜單項屬性,以及對生成的菜單進行二次開發、維護等。 以上所述僅為本發明的較佳實施例而已,並不用以限制本發明,凡在本發明的精 神和原則之內所作的任何修改、等同替換和改進等,均應包含在本發明的保護範圍之內。
權利要求
一種應用程式菜單的生成方法,其特徵在於,所述方法包括以下步驟讀取各菜單項的結構關係信息及菜單項屬性,所述菜單項屬性包括菜單項名稱和操作對象;根據讀取的結構關係信息及菜單項屬性依次生成菜單對象。
2. 如權利要求1所述的方法,其特徵在於,所述菜單項分為操作項、主菜單和子菜單。
3. 如權利要求1所述的方法,其特徵在於,所述讀取到的結構關係信息及菜單項屬性 為樹狀對象模型。
4. 如權利要求3所述的方法,其特徵在於,所述根據讀取的結構關係信息及菜單項屬 性依次生成菜單對象具體包括根據遍歷方式取出樹狀對象模型的一個結點,並根據該結點中包含的菜單項屬性生成 菜單對象;將生成的菜單對象添加到所取出結點的父結點對應的菜單對象中; 判斷是否遍歷完所讀取到的樹狀對象模型的所有結點,如果是則結束,否則進入所述根據遍歷方式取出樹狀對象模型的一個結點,並根據該結點中包含的菜單項屬性生成菜單對象的步驟。
5. 如權利要求4所述的方法,其特徵在於,所述遍歷方式為深度優先遍歷方式或廣度 優先遍歷方式。
6. 如權利要求1所述的方法,其特徵在於,在所述讀取各菜單項的結構關係信息及菜 單項屬性的步驟前,還包括各菜單項的結構關係信息及菜單項屬性解析步驟,具體為解析讀取到的配置文件,得到各菜單項的結構關係信息及菜單項屬性。
7. 如權利要求6所述的方法,其特徵在於,所述配置文件為XML文件。
8. —種應用程式菜單的生成裝置,其特徵在於,所述裝置包括信息讀取單元,用於讀取各菜單項的結構關係信息及菜單項屬性,所述菜單項屬性包 括菜單項名稱和操作對象;以及菜單項生成單元,用於根據讀取的結構關係信息及菜單項屬性依次生成菜單對象。
9. 如權利要求8所述的裝置,其特徵在於,所述信息讀取單元讀取到的結構關係信息 及菜單項屬性為樹狀對象模型。
10. 如權利要求9所述的裝置,其特徵在於,所述菜單項生成單元包括 對象生成模塊,用於根據遍歷方式取出樹狀對象模型的一個結點,並根據該結點中包含的菜單項屬性生成菜單對象;對象添加模塊,用於將生成的菜單對象添加到所取出結點的父結點對應的菜單對象 中;以及判斷模塊,用於判斷是否遍歷完所讀取到的樹狀對象模型的所有結點,如果是則結束, 否則觸發所述對象生成模塊繼續遍歷下一個結點。
11. 如權利要求io所述的裝置,其特徵在於,所述遍歷方式為深度優先遍歷方式或廣度優先遍歷方式。
12. 如權利要求8所述的裝置,其特徵在於,所述裝置還包括解析單元,用於解析讀取到的配置文件,向所述信息讀取單元輸出得到各菜單項的結 構關係信息及菜單項屬性。
13. —種應用系統,其特徵在於,所述系統包括權利要求8至12任一項所述應用程式菜 單的生成裝置。
全文摘要
本發明適用於計算機處理領域,提供了一種應用程式菜單的生成方法、裝置及應用系統。所述方法包括以下步驟讀取各菜單項的結構關係信息及菜單項屬性,所述菜單項屬性包括菜單項名稱和操作對象;根據讀取的結構關係信息及菜單項屬性依次生成菜單對象。在本發明實施例中,通過讀取到的各菜單項的結構關係信息及菜單項屬性來依次生成菜單對象,實現了一種應用程式菜單的生成方法,支持二次開發、維護方便。
文檔編號G06F17/30GK101714083SQ20091018902
公開日2010年5月26日 申請日期2009年12月16日 優先權日2009年12月16日
發明者李馥龍 申請人:金蝶軟體(中國)有限公司