簡體   English   中英

在滾動條上使用setValue時,uitable標頭中的損壞

[英]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

每次嘗試時,表格都會正確顯示(無毛刺):

scrolled_table

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM