在Matlab用户界面上限制编辑框中的字符串长度

在Matlab用户界面上限制编辑框中的字符串长度,matlab,matlab-guide,Matlab,Matlab Guide,我在Matlab用户界面中插入了一个编辑框,我想限制用户可以键入的字符数。编辑框上没有明显的属性(例如“最大字符数”)。我尝试使用回调函数,验证编辑框上的当前字符串大小是否大于我设置的限制,并截断第一个字符,但是回调仅在我单击编辑框外部然后再次单击内部时起作用 你知道怎么做吗 提前谢谢 编辑 按照Amro的建议,我尝试在编辑框的KeyPressFcn回调中放置验证代码。我键入了以下代码: function prefix_edit_KeyPressFcn(hObject, eventdata, h

我在Matlab用户界面中插入了一个编辑框,我想限制用户可以键入的字符数。编辑框上没有明显的属性(例如“最大字符数”)。我尝试使用回调函数,验证编辑框上的当前字符串大小是否大于我设置的限制,并截断第一个字符,但是回调仅在我单击编辑框外部然后再次单击内部时起作用

你知道怎么做吗

提前谢谢

编辑

按照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键然后再次尝试键入内容时才会更改。似乎只有在按下Enter键后才会调用KeyPressFcn(正如Amro在论坛帖子中建议的那样)


论坛上提出的解决方案对于这样一项简单的任务来说似乎太复杂了。当然,必须有一种更优雅的方式……

尝试将您的逻辑放入回调函数中。有一个老的解决方案正在讨论类似的解决方案。

不要使用KeyPressFcn,而是在底层Java组件的KeyTypedCallback属性上实现前面提到的回调函数,可以使用

注意:不要使用底层Java组件的文档的lineLimit属性,因为这是一条死胡同——Matlab不使用它

您可以设置自己的文档对象,但我认为回调方法更简单