java - Java 方法没有在 Matlab 中正确运行?
问题描述
我正在使用用Matlab 2018编写的Level 2 S 函数来处理来自Simulink模型的输入。根据该输入,图像(使用 Swing 制作)在屏幕上移动。
例如,“10”使其向左移动,“01”向右移动。
我使用Java 1.8创建了一个Game
类来处理图像移动。我需要将数据传递给 Java 对象的实例,因此我在类中创建了一个方法来获取输入值并在屏幕上移动图像,称为getMdlValues
. moveDiver
是 Matlab 中用来调用的公共方法getMdlValues
。
我在 S 函数的函数中创建对象,并在函数中使用andStart
抓取它。然后我尝试 通过. 但是,屏幕上什么也没有发生。即使我在方法中放入的打印语句正在执行,图像也不会移动。Update
set_param
get_param
getMdlValues
moveDiver
部分 Matlab 代码供参考:
function Start(block)
gameObj = javaObject('frenchToast.lafayette.edu.Game'); % object
set_param(block.BlockHandle,'UserData',gameObj);
%javaMethodEDT('main',gameObj,""); %test
gameObj.main("");
%end Start
function Update(block)
gameObj = get_param(block.BlockHandle,'UserData'); %get object
javaMethod('moveDiver',gameObj, 1,0); %move image to the left
%end Update
我试过了javaObjectEDT
,javaMethodEDT
但它们没有用——图像没有移动。也许我必须制作一个 Runnable?我没有尝试过,我不知道该怎么做。我已经验证了getMdlValues
在 Matlab 中不调用该方法时该方法有效(我在 Eclipse 中运行了该类,该方法移动了潜水员的图像)。在 Matlab 中,我将它传递给“10”,然后将“left”打印到窗口。所以它运行代码但它不会更新我的图像的位置。为什么?Matlab 不能在我的 Game 类中操作 Swing 对象吗?
Game.class 中的部分代码:
//create scuba diver image
scuba = new JLabel("");
scuba.setIcon(new ImageIcon("C:\\Users\\frenchToast\\Downloads\\scuba75.png"));
scuba.setBounds(285, 537, 75, 44);
panel.add(scuba);
很久以后的代码:
public void moveDiver(boolean left, boolean right) {
getMdlValues(left,right);
}
private void getMdlValues(boolean left, boolean right) { //used to analyze values from Simulink
System.out.println("testing getMdlValues");
if(!chestDirection.equals("")){ //don't do anything unless start menu has been closed
if(left == true && right == false) { //left
scuba.setLocation(scuba.getX() - 5, scuba.getY());
System.out.println("left");
}
else if(left == false && right == true) { //right
scuba.setLocation(scuba.getX() + 5, scuba.getY());
System.out.println("right");
}
else {
System.out.println("Left and Right values unable to be determined or do not move");
}
checkScored(); //see if scuba diver found the treasure
}
}
我真的很感激任何时间和帮助!如果您需要更多(或更少)细节,请告诉我。
解决方案
推荐阅读
- r - tune r 包(tidymodels)中的 tune_grid 函数出错 - 错误:“参数”对象具有必需的列
- grep - 我怎么能用 grep 排除一行?
- python - 每第 n 个实例在 Numpy 数组中查找最大值
- google-colaboratory - 启动 TensorBoard 失败(以 -6 退出)
- javascript - 在 React 中使用 .map() 时,任何人都可以帮助解决类型错误问题吗?
- python - 使用 Pandas 库更改标题/列名的困难
- vba - 使用 API/宏在 FACE 上按 ID 选择
- php - PHP 只能在几个月的范围内获得即将到来的星期日
- php - 当 Nginx 和 PHP-FPM 通过 unix 套接字通信时,docker 负载平衡是否仍然有效?
- c# - 继承类后,不能保留我的构造函数