バニラMatlabではこれはできません。 MathworksはGUI(survey 1、survey 2)でサポートしているものを拡張しようとしているようですが、まだこれが許されていません。
考えられる回避策の1つはfindjobj.m, by Yair Altmanです。彼は編集ボックスについて説明していますin this post
テキストボックスにfindjobj.mをトレースして、必要な1,2行のコードを見つけ出し、3,400行すべてを持ち歩く必要はありません。
あなたが本当にする必要があるのは、選択したインデックスを取得してそこから作業することだけです。
javaHandle = findjobj(editBoxHandle);
startSelect = get(javaHandle,'SelectionStart');
endSelect = get(javaHandle,'SelectionEnd');
選択したテキストのインデックスを取得すると、そのテキストを新しいテキストに置き換えることはほとんど自明になります。
text = editBoxHandle.String;
editBoxHandle.String = [text(1:startSelect) newText text(endSelect:end)];
ユーザーがボタンをクリックすると、テキストボックスのフォーカスが失われ、選択されたテキストが消去されなくなります。テキストボックスにフォーカスを戻し、ボタンのコールバックで選択した内容を再度選択することで、これを解決できます。
uicontrol(editBoxHandle); %Give focus to the edit box, selecting the entire text
javaHandle.select(startSelect,endSelect); %select/highlight the correct stuff
これは、ユーザーの選択に置き換えされるテキストをハイライト表示します