[英]Corruption in uitable header when using setValue on the scrollbar
我試圖在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
每次嘗試時,表格都會正確顯示(無毛刺):
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.