Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
User interface 在《MATLAB指南》中显示大型文本文件的最佳方式是什么?_User Interface_Matlab_Matlab Guide - Fatal编程技术网

User interface 在《MATLAB指南》中显示大型文本文件的最佳方式是什么?

User interface 在《MATLAB指南》中显示大型文本文件的最佳方式是什么?,user-interface,matlab,matlab-guide,User Interface,Matlab,Matlab Guide,如何使用MATLAB向导控件在GUI中显示文本文件的内容?文本文件可能很长,也可能很宽,因此它应该具有垂直和水平滚动条的功能。以下是我对名为“textfile.txt”的通用文本文件的解决方案: 多行编辑框可能是显示文本的最佳选择。例如: %# read text file lines as cell array of strings fid = fopen( fullfile(matlabroot,'license.txt') ); str = textscan(fid, '%s', 'Del

如何使用MATLAB向导控件在GUI中显示文本文件的内容?文本文件可能很长,也可能很宽,因此它应该具有垂直和水平滚动条的功能。

以下是我对名为“textfile.txt”的通用文本文件的解决方案:


多行编辑框可能是显示文本的最佳选择。例如:

%# read text file lines as cell array of strings
fid = fopen( fullfile(matlabroot,'license.txt') );
str = textscan(fid, '%s', 'Delimiter','\n'); str = str{1};
fclose(fid);

%# GUI with multi-line editbox
hFig = figure('Menubar','none', 'Toolbar','none');
hPan = uipanel(hFig, 'Title','Display window', ...
    'Units','normalized', 'Position',[0.05 0.05 0.9 0.9]);
hEdit = uicontrol(hPan, 'Style','edit', 'FontSize',9, ...
    'Min',0, 'Max',2, 'HorizontalAlignment','left', ...
    'Units','normalized', 'Position',[0 0 1 1], ...
    'String',str);

%# enable horizontal scrolling
jEdit = findjobj(hEdit);
jEditbox = jEdit.getViewport().getComponent(0);
jEditbox.setWrapping(false);                %# turn off word-wrapping
jEditbox.setEditable(false);                %# non-editable
set(jEdit,'HorizontalScrollBarPolicy',30);  %# HORIZONTAL_SCROLLBAR_AS_NEEDED

%# maintain horizontal scrollbar policy which reverts back on component resize 
hjEdit = handle(jEdit,'CallbackProperties');
set(hjEdit, 'ComponentResizedCallback',...
    'set(gcbo,''HorizontalScrollBarPolicy'',30)')
要启用水平滚动,我们必须获得嵌入式JScrollPane java组件的句柄。我正在使用优秀的功能。然后我们根据需要将
HorizontalScrollBarPolicy
属性设置为
javax.swing.JScrollPane.HORIZONTAL\u SCROLLBAR\u
(=30),如本文所述。我还禁用了文本编辑(只读)


这是我的解决方案。祝你好运

fid = fopen(filename);
str = textscan(fid, '%s', 'Delimiter','\n'); str = str{1};
fclose(fid);
f=figure;
hPan = uipanel(f,'Units','normalized');
uicontrol(hPan, 'Style','listbox', ...
'HorizontalAlignment','left', ...
'Units','normalized', 'Position',[0 0 1 1], ...
'String',str);

谢谢你的回答。我认为你的解决方案更好。@jpeji:在我看到你添加的代码之前,我不清楚你在原始问题中问了什么。。。我猜源代码也可以“值1000字”:)如果您添加一些解释会怎么样?
fid = fopen(filename);
str = textscan(fid, '%s', 'Delimiter','\n'); str = str{1};
fclose(fid);
f=figure;
hPan = uipanel(f,'Units','normalized');
uicontrol(hPan, 'Style','listbox', ...
'HorizontalAlignment','left', ...
'Units','normalized', 'Position',[0 0 1 1], ...
'String',str);