2011-05-17 30 views
11

我使用一个将线句柄作为输入参数的类扩展到其构造函数的行对象的功能。然后,该类将创建一个WindowMouseMotion侦听器,以检测鼠标悬停在突出显示该行的行上,并显示一个包含用于设置某些行/数据属性的控件的面板。这很好。是否可以通过继承扩展图形对象的功能?

我现在试图通过侦听该行的ObjectBeingDestroyed事件来使该类检测并响应正在删除的行。我的问题是,通过存储行的句柄将这个类链接到行对象是否是最好的解决方案是否可以通过继承它来扩展行类?我查看了MATLAB文档并在线搜索,但无法找到有关从图形类继承的确切信息。

+0

这是一个非常详细的,你可能不会很快看到答案。 [你可能想问问Mathworks这一个](http://www.mathworks.com/matlabcentral/answers/?s_cid=HP_FR_answers)。 – 2011-05-18 20:09:03

+0

@Chris A. - 感谢您的链接。我知道MATLAB中央新闻组,但我不知何故错过了答案部分。这里是我的帖子的链接:http://www.mathworks.com/matlabcentral/answers/7737-is-it-possible-to-extend-graphics-objects-functionality-through-inheritance – 2011-05-18 20:45:39

+0

喜欢构成过度继承: http://stackoverflow.com/questions/49002/prefer-composition-over-inheritance – Mikhail 2011-05-26 19:44:51

回答

2

可以对内置句柄图形类进行子类化。有一个例子在http://undocumentedmatlab.com/blog/udd-properties/。它使用特定的无证UDD机制。 MathWorks多次声明,UDD仅用于内部开发,仅供使用且不受支持。但值得注意的是,The MathWorks提供的m代码中有很多UDD子类的例子。另外,如果他们觉得有一个特定的理由来保密UDD的秘密,它可以是内置的或pcoded。所以我觉得如果你找到了如何在The MathWorks提供的源代码中做事情的例子,你应该可以随意使用它们。

1

得到此回复在MATLAB Central Answers“没有从(/子类)处理图形对象继承文档的方式。我想规则是,如果你不能在文档中找到它,它不被支持。

有人建议可以扩展新的HG2类here但这不是官方的Mathworks信息。

+1

您确实可以收听该行的ObjectBeingDestroyed事件。这是Matlab在其代码中多次执行的内容(例如,看看javacomponent.m)。 也许一个简单的方法是简单地在行的DeleteFcn属性中设置回调函数。 – 2011-09-08 10:54:47