Ограничение длины строки в поле ввода в пользовательских интерфейсах Matlab - PullRequest
2 голосов
/ 03 августа 2011

Я вставил поле редактирования в пользовательский интерфейс Matlab, и я хотел бы ограничить количество символов, которые может печатать пользователь. В окне редактирования нет очевидного свойства (например, «максимум символов»). Я пытался использовать функцию обратного вызова, проверяя, был ли текущий размер строки в поле редактирования больше установленного предела, и обрезая первые символы, однако обратный вызов действовал только тогда, когда я щелкнул за пределами поля редактирования, а затем снова внутри.

Ты хоть представляешь, как это сделать?

Заранее спасибо.

EDITED

По предложению Amro, я попытался поместить проверочный код в обратный вызов 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).

Решение, предложенное на форуме, кажется слишком сложным для такой простой задачи. Конечно, должен быть более элегантный способ ...

Ответы [ 2 ]

1 голос
/ 16 августа 2011

Вместо использования KeyPressFcn, реализуйте вышеупомянутую функцию обратного вызова в свойстве KeyTypedCallback базового компонента Java, которое можно найти с помощью утилиты findjobj .

Примечание: НЕ используйте атрибут lineLimit документа базового компонента Java, поскольку это тупик - остаток старых версий Java , которые не используются Matlab.

Вы можете установить свой собственный объект Document, но я думаю, что способ обратного вызова проще.

0 голосов
/ 03 августа 2011

Попробуйте поместить свою логику в функцию обратного вызова KeyPressFcn . Существует старая ветка новостной группы , в которой обсуждается подобное решение.

...