MATLAB Answers

Login_Name
5

Where is a list of eventtypes for listeners?

Login_Name
さんによって質問されました 2012 年 12 月 11 日
最新アクティビティ Jim Hokanson
さんによって 回答されました 2015 年 2 月 11 日
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 件のコメント

Daniel Shub
2012 年 12 月 12 日
I cannot even find documentation on handle.listener. I wonder if this is a result of undocumented functionality associated with hg2.
Jan
2012 年 12 月 12 日
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
2013 年 8 月 27 日
Matt, did you find any list or documentation for this?

サインイン to comment.

2 件の回答

Jim Hokanson
回答者: Jim Hokanson
2015 年 2 月 11 日

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'
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 件のコメント

サインイン to comment.


回答者: Malcolm Lidierth 2013 年 5 月 26 日

@Matt
As the uicontrols use Java under the hood, see the available Java listeners at
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 件のコメント

Malcolm Lidierth 2013 年 5 月 26 日
@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:
!
Image Analyst
2013 年 5 月 26 日
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 2013 年 5 月 26 日
IA
Oops. I meant the OPs first link. Probably best to break this LOop.

サインイン to comment.



Translated by