Ich habe schon länger mit dem Problem in dem Thema gekämpft, als ich zugeben möchte.
Ich versuche, dieselbe Action
programmatisch auszuführen, wenn der Benutzer entweder auf View
& gt; Collapse All
oder klicken Sie mit der rechten Maustaste innerhalb des Editorfensters und dann Code Folding
& gt; Fold All
.
Was ich bisher versucht habe:
String
, das dem Action
entspricht, befindet sich möglicherweise in enum
com.mathworks.mde.editor.ActionID
und ist: 'collapse-all-folds'
. Action
aktiviert wird, scheint die folgende Methode ausgeführt zu werden: org.netbeans.api.editor.fold.FoldUtilities.collapseAll(...)
(daher das netbeans-Tag). EditorAction
, ActionManager
, MatlabEditor
: %Vor%
Mein Problem ist, dass ich keinen Weg finden kann, das Action
zu aktivieren
Irgendwelche Ideen / Alternativen?
EDIT1 Nachdem ich etwas in "the book" gegraben habe, glaube ich, dass ich gekommen bin noch näher als vorher (aber immer noch nicht ganz da). Zitat aus dem Buch:
Java-GUI-Komponenten verwenden oft
ActionMap
, um runnableActions
zu speichern Wird von Listenern bei Maus-, Tastatur-, Eigenschaften- oder Containerereignissen aufgerufen. Im Gegensatz zu Objektmethoden kannActions
nicht direkt von MATLAB aufgerufen werden.
Und dann wird eine Problemumgehung erklärt, die ungefähr beinhaltet: eine Art von Action
-Objekt zu bekommen; Erstellen eines ActionEvent
und Aufrufen von Action
's actionPerformed
mit dem ActionEvent
als Argument, wie unten implementiert:
Dieser Code läuft ohne Fehler - tut aber (scheinbar?) nichts. Ich vermute, dass ich ActionEvent
und actionPerformed
für die falschen Objekte anrufe ( ActionManager
hat möglicherweise überhaupt nichts mit diesem Problem zu tun).
P.S.
Ich weiß, dass es einen Hotkey gibt, der das tut ( Ctrl
+ =
), aber das ist nicht das, wonach ich suche (es sei denn, es gibt einen Befehl, einen Hotkey zu drücken :)) / strike>
Tags und Links java netbeans matlab matlab-java