2011-10-26 48 views

回答

6

多行編輯框可以顯示文本的最佳選擇。示例:

%# 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組件的句柄。我正在使用優秀的FINDJOBJ功能。然後,我們將HorizontalScrollBarPolicy屬性設置爲javax.swing.JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED(= 30),如post中所述。我也禁用了對文本的編輯(只讀)。

screenshot

+0

謝謝你的回答。我認爲你的解決方案更好。 – julian

+0

@jpeji:直到我看到你添加的代碼之前,我還不清楚你在原始問題中提出了什麼...我猜源代碼也可以是「值1000字」:) – Amro

1

這裏是我所謂的「TextFile.txt的」通用文本文件的解決方案:

f = figure('menu','none','toolbar','none'); 
    fid = fopen('textfile.txt'); 
    ph = uipanel(f,'Units','normalized','position',[0.4 0.3 0.5 0.5],'title',... 
     'Display window'); 
    lbh = uicontrol(ph,'style','listbox','Units','normalized','position',... 
     [0 0 1 1],'FontSize',9); 

    indic = 1; 
    while 1 
     tline = fgetl(fid); 
     if ~ischar(tline), 
      break 
     end 
     strings{indic}=tline; 
     indic = indic + 1; 
    end 
    fclose(fid); 
    set(lbh,'string',strings); 
    set(lbh,'Value',1); 
    set(lbh,'Selected','on'); 
0

這是我的解決方案。好運

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); 
+0

如果你添加一些解釋? – fedorqui

相關問題