如果我創建了一組要在JFace應用程序中使用的操作並將圖像分配給這些操作,則這些圖像將顯示在工具欄中(我想要他們的地方)和菜單(我不想要他們的地方)。如何禁用JFace菜單的所有圖像,但在工具欄中將其保留爲啓用狀態
除了提供兩組完全獨立的動作(首先消除部分動作點)之外,我該如何安排將這些圖像僅顯示在工具欄中,並讓菜單僅顯示文本?
如果我創建了一組要在JFace應用程序中使用的操作並將圖像分配給這些操作,則這些圖像將顯示在工具欄中(我想要他們的地方)和菜單(我不想要他們的地方)。如何禁用JFace菜單的所有圖像,但在工具欄中將其保留爲啓用狀態
除了提供兩組完全獨立的動作(首先消除部分動作點)之外,我該如何安排將這些圖像僅顯示在工具欄中,並讓菜單僅顯示文本?
我結束了實質上重複的動作,使得對,一個用圖像,一個沒有,從而消除了在第一時間行動的益處(嘆氣) 。另一方面,因爲每個動作都只是在控制器中調用一個方法來執行工作,所以它並不太危險,將這些對組合在一起可以合理地清楚發生了什麼。
我沒有這個檢查自己,但給這個方法的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
}
我遇到了這個問題(除了我想爲工具欄和菜單提供不同的文本)。我最終使用了相同的操作,但是它有兩個不同的實例。
// Use this one in the menu
Action a = new Action();
// Use this one in the toolbar
Action a2 = new Action();
a2.setImageDescriptor(img);
或者,你可以存儲在工具欄版本操作的圖像描述符,並將其設置爲null菜單版本。
不幸的是,據我所知,這將無濟於事 - 對工具欄和菜單使用相同的操作,所以無論哪種情況,getStyle值都是相同的。 – David 2009-04-09 20:40:11