首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Matlab控件的Java句柄设置“text”属性时出错

使用Matlab控件的Java句柄设置“text”属性时出错
EN

Stack Overflow用户
提问于 2014-06-03 17:14:56
回答 1查看 355关注 0票数 0

我使用Yair的findjobj函数Java回调添加到我的Matlab中。我的目标是,编辑文本中的每个按键(特别是向上箭头,向下箭头)将编辑文本的字符串更改为不同的东西(增量,减少一个数字)。

问题是Javaobject的文本set-ting触发了一个奇怪的-ting错误。下面是一个极小的(也是荒谬的)例子,它显示了这个问题:

代码语言:javascript
运行
复制
function keypress_callback_test()
hf = figure();
he=uicontrol('Parent',hf,'Style','edit', 'String', '0');

jhe = findjobj(he, 'nomenu');
set(jhe,'KeyPressedCallback', @change_text);

function change_text(hObject, event)
set(hObject, 'text', num2str(rand(1)))

代码可以工作,但是Matlab会显示以下(相当长的)错误消息:

线程"AWT-EventQueue-0“中的异常( javax.swing.text.JTextComponent.getSelectionStart(Unknown源)、javax.swing.text.PlainView.paint(未知源)、javax.swing.text.FieldView.paint(未知源)、javax.swing.plaf.basic.BasicTextUI.paintSafely(Unknown源( javax.swing.plaf.basic.BasicTextUI.paint(Unknown源))中的异常在javax.swing.plaf.basic.BasicTextUI.update(Unknown源)在javax.swing.JComponent.paintComponent(未知源)在javax.swing.JComponent.paint(未知源)在javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(Unknown源(在javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(Unknown源)在javax.swing.RepaintManager$PaintManager.paint(Unknown源)在javax.swing.RepaintManager.paint(未知源)在javax.swing.JComponent._paintImmediately(Unknown源)(在javax.swing.JComponent.paintImmediately(Unknown源)在javax.swing.RepaintManager.paintDirtyRegions(Unknown源)在javax.swing.RepaintManager.paintDirtyRegions(Unknown源)在javax.swing.RepaintManager.prePaintDirtyRegions(Unknown源)在javax.swing.RepaintManager.access$700(未知源)在javax.swing.RepaintManager$ProcessingRunnable.run(Unknown来源)在java.awt.event.InvocationEvent.dispatch(Unknown源)在java.awt.EventQueue.dispatchEventImpl(未知源)(未知源)在java.awt.EventQueue$3.运行(未知源)在java.awt.EventQueue$3.运行(未知源)在java.security.AccessController.doPrivileged(Native方法)在java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown源)在java.awt.EventQueue.dispatchEvent(未知源)在java.awt.EventDispatchThread.pumpEventsForFilter(Unknown源)在java.awt ).EventDispatchThread.pumpEventsForHierarchy(Unknown源)在java.awt.EventDispatchThread.pumpEvents(Unknown源)在java.awt.EventDispatchThread.pumpEvents(Unknown源)在java.awt.EventDispatchThread.run(未知源)

是什么导致了这个错误,我如何避免它?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-03 17:37:57

我还没弄清楚是什么原因,但我找到了解决办法。可以将附加参数传递给回调函数。如果我传递了编辑文本的Matlab句柄,我可以用set来代替它。

这是一个固定的示例(更改在第5行及以下):

代码语言:javascript
运行
复制
function keypress_callback_test()
hf = figure();
he=uicontrol('Parent',hf,'Style','edit', 'String', '0');

jhe = findjobj(he, 'nomenu');
set(jhe,'KeyPressedCallback', {@change_text, he});


function change_text(hObject, event, he)
set(he, 'String', num2str(rand(1)))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24021157

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档