ADDENDUM - 相同的代码适用于#items< 1000000.我尝试缩放数据,以便滑块的最小值和最大值是我在下面显示的值的十分之一,因此< 1,000,000(java属性最大值)。它没有解决问题。我只能收集1,000,000 java max值与增量数与实际值之类的内容有关。
=====
长话短说。我有一个gui设置的滑块介于1和1841867之间。相关的Matlab滑块手柄属性是:
SliderStep = [5.42928e-07 2.71464e-06]
Max = [1.84187e+06]
Min = [1]
这是设置为产生1:
的小增量(根据滑块左/右箭头)SliderStep(1)*(1841867-1) == 1
然而,当我尝试使用箭头从11000增加到11001时,我得到一个滑块值5973 所以,我在滑块回调中设置了一个断点,并确认滑块的值实际上是5973.在引擎盖下,我获得了滑块的底层java对象:
jScrollBar = findjobj(handles.slFrame)
jScrollBar是一个包含两个java句柄的数组,第二个是:
javahandle_withcallbacks.com.mathworks.hg.peer.SliderPeer$MLScrollBar
它具有最大属性,奇怪的是它是1,000,000,即
get(jScrollBar(2), 'Maximum') ==1000000
结果
SliderStep(1)*(1000000-1)*11001== 5.9727e+03
接近“搞砸”值5973(vs 11001)的方法是巧合。
所以,我尝试将java属性设置为我的值1841867(创建滑块时不应该这样做,我给它的Max属性值为1841867,如Matlab滑块手柄所示!) 。
set(jScrollBar(2),'Maximum',1841867)
然后我做了一个相同的java句柄,它显示了我的新值。精彩。
不幸的是,当我再次使用滑块时,值仍然是5973,并且上面的java句柄对象的默认值已经重置(重新处理?)到1,000,000。
是否有人有方法或神奇的调用让Matlab(?)停止重置/重新定义最大值为1,000,000?