Scrollable text box for GUI with selectable/editable text
9 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
John
el 23 de En. de 2020
Comentada: John
el 28 de En. de 2020
Hello
I am trying to create a scrollable GUI text box with selectable text. It seems that this can't be done using the standard Matlab uicontrols since text selection is disabled when scrolling is enabled. From other answers in this forum, I understand this has to be done in Java. I have had partial success using Yair Altman's excellent utilities "uicomponent" and "attachScrollPanelTo". By attaching a ScrollPanel to a JTextArea (demo code below), I nearly get what I need, but unfortunately I am only able to scroll through a limited range of the text. Is it possible to adjust the scroll limits so that the entire text can be seen? Any advice would be greatly appreciated!
Thanks!
John
____
%create a random string
s = 'a':'z';
textString = ['start ' s(randi(26,1,10000)) ' end'];
%create figure
hFig = figure(1);
hFig.Units='normalized';
hFig.OuterPosition=[0 0 1 1];
%create panel
hPan = uipanel('FontSize',12,...
'BackgroundColor','white',...
'Position',[0 0 1 1]);
pos = getpixelposition(hPan);
%create textarea
jTA = uicomponent('Parent',hPan,'style','javax.swing.jtextarea','tag','myObj',...
'Text',textString,'Position',pos,'Units','pixels',...
'BackgroundColor',[0.6 0.6 0.6],'Opaque',0,'LineWrap',1);
jTA.Font = java.awt.Font('Helvetica', java.awt.Font.PLAIN, 22); % font name, style, size
jTA.Foreground = java.awt.Color(1,1,1);
%attach scroll panel
hSP = attachScrollPanelTo(jTA);
%resize figure to reveal vertical scrollbar
hFig.OuterPosition=[0 0 1 0.5];
0 comentarios
Respuesta aceptada
Yair Altman
el 24 de En. de 2020
Your script generates a GUI that looks perfectly ok to me (fully scrollable & selectable) on my Win10, in both 18b and 20a.
You set the figure's OuterPosition to [0,0,1,.5], so the botttom part of the figure (with the horizontal scrollbar) is hidden beneath the Windows taskbar. But if you set the OuterPosition to be a bit higher (or if you simply drag the figure upward), you'll see the scrollbar.
In other words, I see nothing wrong.
3 comentarios
Yair Altman
el 24 de En. de 2020
The 'start' term is not visible because it is covered by the toolbar. If you set your figure's Toolbar property to 'none' or if you change your text-area's position to be beneath the toolbar, then you'll be able to see the 'start' term.
The 'end' term is not visible because of a limitation in JScrollPane/JTextArea that causes only ~3100 characters to be visible. You can search Java forums for a solution to this, it's not a Matlab problem.
Más respuestas (0)
Ver también
Categorías
Más información sobre Migrate GUIDE Apps en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!