我在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建议的论坛帖子中所述)。
论坛中提出的解决方案似乎过于复杂,只是为了这么简单的任务。当然必须有更优雅的方式...
答案 0 :(得分:1)
不使用KeyPressFcn,而是在底层Java组件的KeyTypedCallback属性上实现上述回调函数,可以使用findjobj utility找到。
注意:不要使用底层Java组件的文档的lineLimit属性,因为这是一个盲目的小巷 - 一个remnant of old Java versions,Matlab没有使用它。
您可以设置自己的Document对象,但我认为回调方式更简单。
答案 1 :(得分:0)
尝试将您的逻辑放在KeyPressFcn回调函数中。有一个旧newsgroup thread正在讨论类似的解决方案。