2011-08-03 15 views
2

Iは、MATLABユーザインタフェースの編集ボックスを挿入し、私は、ユーザーが入力できる文字の数を制限したいです。編集ボックスには明示的なプロパティはありません(「最大文字数」など)。私はその後、内部の再編集ボックスの外側をクリックしたときただし、コールバックのみ行動し、最初の文字を編集ボックスに現在の文字列のサイズが、私が設定した制限よりも大きかった場合の検証と切り捨て、コールバック関数を使用しようとしました。Matlabのユーザインターフェイスで編集ボックス内の文字列の長さを制限

は、あなたがこれを行う方法のいずれかのアイデアを持っていますか?

ありがとうございます。アムロによって示唆されるように

編集

は、私が編集ボックスののKeyPressFcnコールバックの内側に確認コードを配置してみました。

function prefix_edit_KeyPressFcn(hObject, eventdata, handles) 
    text = get(hObject, 'String'); 
    if length(text) > 15 
     set(hObject, 'String', text(1:15)); 
    end 

は問題はエディットボックスの文字列が唯一私が何かを入力したときに変更されていることである、Enterキーを押しますと、再び何かを入力しよう:私は、次のコードを入力しました。 KeyPressFcnは、Enterキーを押した後にのみ呼び出されるように思われます(Amroが提案したフォーラムのポストに記載されています)。

フォーラムで提案された解決策は、このような単純なタスクのために、複雑すぎるようです。確かにもっとエレガントな方法が存在しなければならない...

答えて

0

KeyPressFcnコールバック関数の中で、あなたのロジックを置くようにしてください。同様の解決策を検討している古いnewsgroup threadがあります。

1

KeyPressFcnを使用する代わりに、前述のコールバック関数を基になるJavaコンポーネントのKeyTypedCallbackプロパティ(findjobj utilityを使用)で実装します。

注:基本的なJavaコンポーネントのドキュメントのlineLimit属性は、盲目的な場所であるため、Matlabでは使用されていません。remnant of old Java versionsです。

独自のDocumentオブジェクトを設定することができますが、コールバックの方法は、私が思う簡単です。

関連する問題