2013-07-15 1 views
1

У меня есть подходящий в MATLAB с именами ростов. Столбец с именами ростов слишком широк, и я хочу сделать его «жестким» - как изменить размер столбца rownames на подходящем?Изменить размер столбца колонны ширины uitable в MATLAB

+1

Ответ описан [здесь] (http://undocumentedmatlab.com/blog/multi-line-uitable-column-headers/). Это (AFAIK) недокументированный MATLAB, поэтому применяются обычные предупреждения. –

ответ

2

В приведенном ниже примере кода представлен способ для этого. Приветствия.

FontSize = 18; 
fh = figure; 
data = {1,1,1,1; 2,2,1,1; 3,6,1,1; 4,4,4,1; 6,5,4,1}; 
cnames = {'Speed (kph)','Curvature (m)','Banking (deg)','Elevation (m)'}; 
rnames = {'Braking','Entry','Mid Corner', 'Mid Throttle', 'Exit'}; 
t = uitable('Units','normalized','Position',[0 0 1 
1],'Data',data,'ColumnName',cnames,'RowName',rnames,'FontSize',FontSize); 

hs = '<html><font size="+2">'; %html start 
he = '</font></html>'; %html end 
cnh = cellfun(@(x)[hs x he],cnames,'uni',false); %with html 
rnh = cellfun(@(x)[hs x he],rnames,'uni',false); %with html 
set(t,'ColumnName',cnh,'RowName',rnh) %apply 

%get the row header 
jscroll=findjobj(t); 
rowHeaderViewport=jscroll.getComponent(4); 
rowHeader=rowHeaderViewport.getComponent(0); 
height=rowHeader.getSize; 
rowHeader.setSize(80,360) 

%resize the row header 
newWidth=150; %100 pixels. 
rowHeaderViewport.setPreferredSize(java.awt.Dimension(newWidth,0)); 
height=rowHeader.getHeight; 
rowHeader.setPreferredSize(java.awt.Dimension(newWidth,height)); 
rowHeader.setSize(newWidth,height); 

figPos = get(fh,'Position'); 
tableExtent = get(t,'Extent'); 
set(fh,'Position',[figPos(1:2), figPos(3:4).*tableExtent(3:4)]); 

 Смежные вопросы

  • Нет связанных вопросов^_^