在滚动条上使用setValue时,可用标题中的损坏

我试图在MATLAB中创建一个表格,我可以通过编程方式更改滚动位置。 我创建了一个uitable并提取了Java的手柄UITablePeer对象(这里命名为htable )。

然后使用以下命令获得UIScrollbarPane对象的句柄:

hscroll = htable.getParent.getParent.getVerticalScrollBar

在这一点上,这个图像看起来像这样(我的实际表格更复杂,这只是我作为一个例子):

之前

桌子左下角的盒子是一个pushbutton 。 当它的回调被触发时,它使用setValue方法来改变滚动条的位置,例如

hscroll.setValue(10)

在此之后,表格如下所示:

后

正如你所看到的,表格的顶部已经损坏。 我试过使用refresh功能或repaint方法,但他们似乎没有帮助; 解决这个问题的唯一方法是移动另一个窗口(通过拖动或Alt-Tabbing),使表格完全被覆盖,当我切换回表格时,它是可以的。 显然,这不是一个真正的最佳解决方案。

任何人都可以提出一种方法来预防或解决这个问题?

谢谢


这里是我的实现(从这个代码改编):

% create a sample table with random data
figure('Menubar','none', 'Position',[400 400 250 300])
h = uitable('Units','normalized', 'Position',[0 0 1 1], ...
    'ColumnName',{'1','2'}, 'Data',num2cell(rand(50,2)>0.5));

% get Java handles
jScroll = findjobj(h, 'class','UIScrollPane');
jView = jScroll.getViewport();
jTable = jView.getView();

% scroll to specified row (make it the top row)
row = 20 - 1;        % 20th row (zero-based index)
jView.setViewPosition(java.awt.Point(0, row * jTable.getRowHeight()))
jScroll.repaint()    % workaround for any visual glitches

每次尝试时,表格都会正确显示(无毛刺):

链接地址: http://www.djcxy.com/p/68895.html

上一篇: Corruption in uitable header when using setValue on the scrollbar

下一篇: Query to detect duplicate rows