2

我在 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 然后尝试再次输入内容。似乎 KeyPressFcn 仅在按 Enter 后才被调用(如 Amro 建议的论坛帖子中所述)。

对于如此简单的任务,论坛中提出的解决方案似乎太复杂了。当然必须有一个更优雅的方式......

4

2 回答 2

1

不要使用 KeyPressFcn,而是在底层 Java 组件的 KeyTypedCallback 属性上实现上述回调函数,可以使用findjobj 实用程序找到该属性。

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

您可以设置自己的 Document 对象,但我认为回调方式更简单。

于 2011-08-16T07:10:55.147 回答
0

尝试将您的逻辑放在KeyPressFcn回调函数中。有一个旧的新闻组线程在讨论类似的解决方案。

于 2011-08-03T18:50:14.237 回答