我想使用Matlab连续读取文件并将其显示在专用窗口中。因此,我使用uicontrol
命令。它运作良好,但每次更新内容时我都想直接移至内容结尾。有什么解决办法吗?
MWE:
figHandle = figure('units','pixels',...
'position',[40 40 240 940],...
'menubar','none',...
'resize','off',...
'numbertitle','off',...
'name','window custom')
txHandle = uicontrol('style','edit',...
'units','pix',...
'position',[10 60 220 830],...
'backgroundcolor','w',...
'HorizontalAlign','left',...
'min',0,'max',10,...
'enable','inactive');
txt=repmat('t|',1,100000);
set(txHandle,'string',cat(1,get(txHandle,'string'),{txt}));
答案 0 :(得分:1)
没有纯MATLAB 的方法,但是完全可以使用 undocummented 方法来处理底层的 java 组件。
首先需要的是Matlab Central的实用程序findjobj
。您需要下载此函数并使它在您的MATLAB路径中可访问。该函数将检索MATLAB文本框下面的java对象的句柄。
一旦您可以访问文本框的java方法,将caret
移动到文本末尾就很简单了,您只需要调用一种组件方法:setCaretPosition(positionIndex)
。
一旦您在MATLAB路径中具有函数findjobj
,只需在示例代码之后添加以下代码即可:
% Get the handle of the jave edit box
jtxtBox = findjobj(txHandle) ;
% Get the handle of the jave "panel" component
jTxtPane = jtxtBox.getComponent(0).getComponent(0) ;
% move the caret to the end of the text
jTxtPane.setCaretPosition( numel(txt) );
et voila:-)