當(dāng)我們的menu item需要根據(jù)當(dāng)前選擇不同對(duì)象發(fā)生動(dòng)態(tài)變化就要注意了,EMF Editor的做法在添加完成之后,將焦點(diǎn)設(shè)置到新增的節(jié)點(diǎn)上,這樣做看似無(wú)心,其實(shí)是有一定原因的,至少我認(rèn)為是這樣,如果我們?cè)黾恿艘粋(gè)節(jié)點(diǎn)(不管是子節(jié)點(diǎn)還是兄弟節(jié)點(diǎn)),然后焦點(diǎn)還停留在當(dāng)前節(jié)點(diǎn)上,那么當(dāng)再增加一個(gè)與前一個(gè)類(lèi)型一樣的節(jié)點(diǎn)時(shí)就會(huì)失敗,其原因在于沒(méi)有變換焦點(diǎn),command還是使用前面取得的child作為要添加的節(jié)點(diǎn),而這個(gè)節(jié)點(diǎn)已經(jīng)在前面的操作中被作為子節(jié)點(diǎn)(或者兄弟節(jié)點(diǎn))添加了,但是如果焦點(diǎn)在新增之后被變換情況就不同了,當(dāng)需要再添加一個(gè)節(jié)點(diǎn)的時(shí)候,我們必須讓焦點(diǎn)回到前面的節(jié)點(diǎn)上,這時(shí)selection 相關(guān)的listener就會(huì)觸發(fā)重新創(chuàng)建新的Action以及與之相關(guān)的Command,這時(shí)的child也會(huì)隨之重新創(chuàng)建一個(gè),因此添加就沒(méi)有問(wèn)題。
安徽新華電腦學(xué)校專(zhuān)業(yè)職業(yè)規(guī)劃師為你提供更多幫助【在線咨詢】