How to automatically scroll a textbox to end of line?

4 次查看(过去 30 天)
Hi all,
I'm trying to code a calculator, which has an inactive (non-editable) textbox used for display of the input. Is there a way to automatically scroll the textbox to the end when the input gets longer than the width of the textbox? (If it's impossible in matlab maybe there's some workaround in java?)
Thanks!
Niko

采纳的回答

Geoff Hayes
Geoff Hayes 2014-9-13
Niko - if you go to the MATLAB File Exchange and download the submission findjobj and save this file somewhere in your MATLAB search path, then you can update your GUI with the following two lines of code that will set the caret to the end of the line in your edit box so that it creates the appearance of automatically scrolling to the end
% assume that the text box that has been updated with the user input is named
% text1
% after text1 has been updated, move the caret to the end of the line
jhText1 = findjobj(handles.text1);
jhText1.setCaretPosition(jhText1.getDocument.getLength);
I tried out the following by creating a simple GUI using GUIDE. (If you created your GUI in a different manner, then you will just have to replace handles.text1 with the handle to your non-editable text box.
The above worked in my version of MATLAB R2014a on OS X 10.8.5.
  4 个评论
Niko
Niko 2014-9-16
编辑:Niko 2014-9-16
Hi Geoff,
I just solved the mystery - I put the setCaretPosition() call immediately after I changed the content of the textbox, which actually takes effect after setCaretPosition() is executed since it takes some time to run, and changing the content (from a function rather than manual input) seems to reset caret position to 0. So I added pause(0.01) before setCaretPosition and now it works. Thanks again for your help!
Niko

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Migrate GUIDE Apps 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by