Dev*_*-iL 12 matlab undocumented-behavior flexbox matlab-figure matlab-gui
安装R2018b后,我打开的第一个数字包含一条有趣的消息(以蓝色显示):
它之所以有趣,是因为它包含文本换行,透明度等功能,即使文本调整大小,图像也保持恒定宽度(这让我想起了CSS3 flexbox,因此标签)等等.
动画的最后一部分是慢动作,以更好地显示div的大小如何跟随图形的大小.
如果重要,我正在使用Win 10 v1803.
我想知道我们如何可以得出类似的,定制的,申报单(对于缺乏一个更好的词)在我们的数字.(重要的是要强调这不是一个UIFigure!)
到目前为止我发现了什么:
" 了解更多"链接打开页面:
web(fullfile(docroot, 'matlab/creating_plots/interactively-explore-plotted-data.html'))
Run Code Online (Sandbox Code Playgroud)
然而,任何一个web或docroot(或偶数doc)的入口点的断点都没有被击中.
假设这个元素是Child图中的一个,我试图找到它的句柄:
>> set(gcf,'MenuBar','none'); findall(gcf)
ans =
22×1 graphics array:
Figure (1)
ContextMenu
AnnotationPane
Axes
AxesToolbar
Text
Text
Text
ToolbarStateButton (Brush/Select Data)
ToolbarStateButton (Data Tips)
ToolbarStateButton (Rotate 3-D)
ToolbarStateButton (Pan)
ToolbarStateButton (Zoom In)
ToolbarStateButton (Zoom Out)
ToolbarPushButton (Restore View)
Button
Button
Button
Button
Button
Button
Button
Run Code Online (Sandbox Code Playgroud)
然而,使这些控件不可见使用set(h(2:end), 'Visible', false)并没有使div消失.
保存图形.fig或为其生成代码,不会留下任何此div的痕迹.
当uiinspect这个数字时,这个div没有显示(或者至少,我找不到它).
我不知道我究竟做了什么让它再次出现,但是因为它设置在你第一次启动R2018b时出现,我怀疑删除prefdir(很明显,在备份之后)并重新启动MATLAB可能会把它带回来.
com.mathworks.mlservices.MLHelpServices.setCurrentLocation(from mlservices.jar),这将打开帮助浏览器.在Java方面挖掘了一些东西(从findjobj很多开始,然后是很多.getComponent(0).getComponent(0)...),我终于设法找到了有问题的组件.这是我学到的东西:
该组件被调用InfoPanel,是MATLAB Java API的一部分.类定义本身可在以下位置找到:
MATLAB/R2018b/java/jar/hg.jar!/com/mathworks/hg/util/InfoPanel.class
Run Code Online (Sandbox Code Playgroud)为了使它出现,我们需要调用该static方法addBannerPanel,传入一个数字句柄:
com.mathworks.hg.util.InfoPanel.addBannerPanel( figure(randi(1E4)) );
Run Code Online (Sandbox Code Playgroud)
或者另一个也接受自定义面板的签名:
jIP = com.mathworks.hg.util.InfoPanel;
jIP.setBackground(java.awt.Color(0.8, 0.7, 0.1));
com.mathworks.hg.util.InfoPanel.addBannerPanel( figure(randi(1E4)), jIP );
Run Code Online (Sandbox Code Playgroud)控制是否应该出现的MATLAB设置showinteractioninfobar位于<prefdir>/matlab.settingsXML 内部.
似乎是"有趣的部分" InfoPanel是私有的,这意味着它几乎不允许任何自定义(主要是一些颜色;不是字符串或图标),但它应该相当容易制作这个类的副本并公开我们的所有元素需要.