Come è possibile disattivare tutte le immagini per un menu JFace ma lasciarli abilitati nella barra degli strumenti
Domanda
Se creo una serie di azioni da utilizzare in un'applicazione JFace e assegno immagini a quelle azioni, quelle immagini appaiono sia nella barra degli strumenti (dove voglio) e nei menu (in cui non voglio loro).
Oltre a fornire due insiemi completamente separati di azioni (che elimina parte del punto di azioni in primo luogo), come posso organizzare per avere quelle immagini visualizzato solo nella barra degli strumenti, e hanno i menu del display solo testo?
Soluzione 3
Ho finito essenzialmente duplicare le azioni, accoppiando, uno con un'immagine, un colpo, eliminando così il vantaggio delle azioni in primo luogo (sigh). D'altra parte, poiché ogni azione si limita a richiamare un metodo unico nel controllore di eseguire il lavoro, non è troppo insidioso e raggruppare le coppie insieme rende ragionevolmente chiaro cosa succede.
Altri suggerimenti
Mi sono imbattuto in questo problema così (tranne che ho voluto un testo diverso per la barra degli strumenti e menu.) Ho finito per usare la stessa azione, ma due diverse istanze di esso.
// Use this one in the menu
Action a = new Action();
// Use this one in the toolbar
Action a2 = new Action();
a2.setImageDescriptor(img);
In alternativa, è possibile memorizzare il descrittore immagine nell'azione per la versione della barra degli strumenti e impostarlo su null per la versione del menu.
Non ho controllato io stesso, ma dare a questo metodo un looksee:
public int getStyle() { ... }
E 'definito nella classe di azione, e sembra restituire il tipo di elemento di interfaccia che il ricorso è rappresentato graficamente come. Così allora si potrebbe ignorare il metodo getImageDescriptor ():
public ImageDescriptor getImageDescriptor() {
if (getStyle() == AS_DROP_DOWN_MENU)
return null; // No icon in a menu
return someImageDescriptor; // Actual icon
}