MATLAB Answers

Matt Fig

Where is a list of eventtypes for listeners?

Asked by Matt Fig
on 11 Dec 2012
Latest activity Answered by Jim Hokanson
on 11 Feb 2015

Usually I think MATLAB has excellent documentation, but there are occasions when I have to pull my hair out looking for something. So when referring to this example solution posted by TMW, it seems we can add an eventlistener to a uicontrol with an eventtype of 'ActionEvent'. But when I use this example I get the following warning message in r2011b:

Warning: The specified event will be removed in a future release.
Please use the following event instead: ContinuousValueChange

So the obvious question is:

What are all of the choices when setting eventtypes for listeners?

I have searched everywhere I can think of for a list of such events but found nothing. Is this yet another instance of non-documentation in MATLAB or have I just not been able to find it?

Does anyone know of such a list in the doc? I want to find something like this list of axes properties but for events or listeners. On that list would be 'ActionEvent' and 'ContinuousValueChange' at least.

  3 Comments

Daniel
on 12 Dec 2012

I cannot even find documentation on handle.listener. I wonder if this is a result of undocumented functionality associated with hg2.

Jan Simon
on 12 Dec 2012

The addlistener command works for many years now, so it is not connected to HG2. The M-file contains some documentation, but you do not find it in the docs, as far as I remember.

Vishal Rane
on 27 Aug 2013

Matt, did you find any list or documentation for this?

Products

No products are associated with this question.

2 Answers

Answer by Jim Hokanson
on 11 Feb 2015

For hg1, events can be found tin the schema.class object

h = uicontrol('style','slider')
class_info = classhandle(handle(h))
events = class_info.Events;
   event_names_local = cell(1,length(events));
   for iEvent = 1:length(events)
       event_names_local{iEvent} = events(iEvent).Name;
   end

For hg2, things are much easier, just reference the metaclass

class_info = metaclass(graphics_handle);
event_names_local = {class_info.EventList.Name};

'ActionEvent' is an event in the schema.class (UDD)

'ContinuousValueChange' is an event in hg2

I have no idea where to find a list of newer events (i.e. ContinuousValueChange when using hg1)

To be a bit more thorough, one could also examine the accompanying Java object using findjobj (FEX). Then you would need to search for properties with a 'Callback' with an accompanying 'CallbackData'

http://undocumentedmatlab.com/blog/matlab-callbacks-for-java-events

Note, one would also want to examine the properties for ones that are observable. This should be fairly straightforward using a similar approach as was used for events.

Jim

  0 Comments


Answer by Malcolm Lidierth
on 26 May 2013

@Matt

As the uicontrols use Java under the hood, see the available Java listeners at

http://docs.oracle.com/javase/tutorial/uiswing/events/api.html

The link above is now broken but I'll guess the UI was a slider or something of that sort which calls a stateChange rather than event listener.

MATLAB collapse these into their 'Callback'. I have always preferred to stick with documented components - so I use Java for GUIs in MATLAB not MATLAB uicontrols. TMW may not document them, but Sun/Oracle do of course.

  4 Comments

Malcolm Lidierth
on 26 May 2013

@IA

There are two links, the first does not work: at least insofar that it now only brings up a page that says "Oops". So its broken according to the formal definition of the term given here:

http://www.mathworks.com/support/solutions/en/data/1-3SR0YI/index.html?solution=1-3SR0YI

!

Image Analyst
on 26 May 2013

I only saw one link that you listed - the one at docs.oracle.com, and clicking on it brings up a page that says

"Listener API Table

In the table that follows, the first column gives...."

Malcolm Lidierth
on 26 May 2013

IA

Oops. I meant the OPs first link. Probably best to break this LOop.


Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply today