2012-05-18 89 views
4

我一直在試圖解決這個過去2天沒有運氣。我瀏覽了所有看起來正確的解決方案頁面,但是我的實現是錯誤的或者他們不是正確的解決方案。NetBeans平臺:工具欄和操作

我創建了一個名爲AddEditDelete的新工具欄。然後我繼續操作添加到它:

這裏是AddAction.java

@ActionID(category = "Edit", 
id = "com.waudware.toolbar.AddAction") 
@ActionRegistration(iconBase = "com/demo/toolbar/icons/add.png", 
displayName = "#CTL_AddAction") 
@ActionReferences({ 
@ActionReference(path = "Toolbars/AddEditDelete", position = 1), 
@ActionReference(path = "Shortcuts", name = "D-A") 
}) 
@Messages("CTL_AddAction=Add") 

public final class AddAction implements ActionListener { 

    public void actionPerformed(ActionEvent e) { 
     //TODO: Code here 
    } 
} 

我也EditAction.java和DeleteAction.java - 他們都被創建爲「總是啓用」。

我一直在試圖做的事情是:當你點擊工具欄上的Add按鈕時,它將執行AddAction.java中的代碼並禁用EditAction.java(灰掉動作按鈕,使它們不可點擊)。

經過2天試圖找出如何做到這一點,我完全失去了,幾乎可以肯定它是不可能的。迄今爲止,NetBeans開發論壇一直沒有幫助。

編輯:我的問題是非常具體而簡單:什麼是正確的(即使它是一個不好的做法)的方法來從AddAction.java - 所以禁用EditAction.java到目前爲止,我還使用查找,CookieSet嘗試,直接調用,操作實例,和我這是遠程就是我想要的僅僅是

ToolbarPool.getDefault().findToolbar("AddEditDelete").setEnabled(false); 

,它可以隱藏工具欄全部,但它不是個人行爲(圖標)。

+0

@AndrewThompson我的問題是非常具體而簡單:什麼是正確的做法,從AddAction.java - 所以禁用EditAction.java到目前爲止,我還使用查找,CookieSet,直接調用,操作實例化嘗試,和ToolbarPool.getDefault()。findToolbar(「AddEditDelete」)。setEnabled(false) - 它隱藏了整個工具欄。 –

回答

3

請參閱Toolbar.getComponents()

Component components = ToolbarPool.getDefault(). 
    findToolbar("AddEditDelete").getComponents(); 
for (Component component : components) { 
    component.setEnabled(false); 
} 
+0

!!我太親近了!我最後一次嘗試通過執行ToolbarPool.getDefault()來打印出組件列表。 findToolbar( 「AddEditDelete」)名單()。 - 但我沒有意識到我可以使用Component數組來禁用按鈕。說實話,這可能是因爲我從來沒有想到AddAction,EditAction是組件。我一直認爲它是一個Action(當我嘗試將它放入Action數組時,它似乎不正確)。您的解決方案有效我現在假設我可以通過它們的索引號引用組件,並有選擇地禁用! –