To use callback properties, assign the callback code to the property. Use one of the following techniques:
A function handle that references the function to execute.
A cell array containing a function handle and additional arguments
A character vector that evaluates to a valid MATLAB® expression. MATLAB evaluates the character vector in the base workspace.
Defining a callback as a character vector is not recommended. The use of a function specified as function handle enables MATLAB to provide important information to your callback function.
For more information, see Callback Function Syntax.
Graphics callback functions must accept at least two input arguments:
The handle of the object whose callback is executing. Use this handle within your callback function to refer to the callback object.
The event data structure, which can be empty for some callbacks or contain specific information that is described in the property description for that object.
Whenever the callback executes as a result of the specific triggering action, MATLAB calls the callback function and passes these two arguments to the function .
For example, define a callback function called lineCallback
for
the lines created by the plot
function. With
the lineCallback
function on the MATLAB path,
use the @
operator to assign the function handle
to the ButtonDownFcn
property of each line created
by plot
.
plot(x,y,'ButtonDownFcn',@lineCallback)
Define the callback to accept two input arguments. Use the first
argument to refer to the specific line whose callback is executing.
Use this argument to set the line Color
property:
function lineCallback(src,~) src.Color = 'red'; end
The second argument is empty for the ButtonDownFcn
callback.
The ~
character indicates that this argument is
not used.
To define additional input arguments for the callback function, add the arguments to the function definition, maintaining the correct order of the default arguments and the additional arguments:
function lineCallback(src,evt,arg1,arg2) src.Color = 'red'; src.LineStyle = arg1; src.Marker = arg2; end
Assign a cell array containing the function handle and the additional arguments to the property:
plot(x,y,'ButtonDownFcn',{@lineCallback,'--','*'})
You can use an anonymous function to pass additional arguments. For example:
plot(x,y,'ButtonDownFcn',... @(src,eventdata)lineCallback(src,eventdata,'--','*'))
For information on using anonymous functions, see Anonymous Functions.
For information about using class methods as callbacks, see Class Methods for Graphics Callbacks.
For information on how MATLAB resolves multiple callback execution, see the BusyAction
and Interruptible
properties of the objects defining callbacks.
You can assign a callback to the property of a specific object or you can define a default callback for all objects of that type.
To define a ButtonDownFcn
for all line objects,
set a default value on the root level.
Use the groot
function to specify
the root level of the object hierarchy.
Define a callback function that is on the MATLAB path.
Assign a function handle referencing this function
to the defaultLineButtonDownFcn
.
set(groot,'defaultLineButtonDownFcn',@lineCallback)
The default value remains assigned for the MATLAB session.
You can make the default value assignment in your startup.m
file.