2009-04-09 65 views
0

如果我創建了一組要在JFace應用程序中使用的操作並將圖像分配給這些操作,則這些圖像將顯示在工具欄中(我想要他們的地方)和菜單(我不想要他們的地方)。如何禁用JFace菜單的所有圖像,但在工具欄中將其保留爲啓用狀態

除了提供兩組完全獨立的動作(首先消除部分動作點)之外,我該如何安排將這些圖像僅顯示在工具欄中,並讓菜單僅顯示文本?

回答

0

我結束了實質上重複的動作,使得對,一個用圖像,一個沒有,從而消除了在第一時間行動的益處(嘆氣) 。另一方面,因爲每個動作都只是在控制器中調用一個方法來執行工作,所以它並不太危險,將這些對組合在一起可以合理地清楚發生了什麼。

0

我沒有這個檢查自己,但給這個方法的LOOKSEE:

public int getStyle() { ... } 

它在Action類中定義的,它似乎返回操作的圖形來界面元素的類型。所以,那麼你可以重寫getImageDescriptor()方法:

public ImageDescriptor getImageDescriptor() { 
    if (getStyle() == AS_DROP_DOWN_MENU) 
     return null; // No icon in a menu 
    return someImageDescriptor; // Actual icon 
} 
+0

不幸的是,據我所知,這將無濟於事 - 對工具欄和菜單使用相同的操作,所以無論哪種情況,getStyle值都是相同的。 – David 2009-04-09 20:40:11

1

我遇到了這個問題(除了我想爲工具欄和菜單提供不同的文本)。我最終使用了相同的操作,但是它有兩個不同的實例。

// Use this one in the menu 
Action a = new Action(); 

// Use this one in the toolbar 
Action a2 = new Action(); 
a2.setImageDescriptor(img); 

或者,你可以存儲在工具欄版本操作的圖像描述符,並將其設置爲null菜單版本。

相關問題