找回密码
 注册
Simdroid-非首页
楼主: nostalgica

[讨论]matlab复杂GUI完全由java实现的可能性。

[复制链接]
发表于 2005-9-27 12:11:47 | 显示全部楼层 来自 四川成都

Re:[讨论]matlab复杂GUI完全由java实现的可能性。

多谢两位大侠的回答,看了nostalgica 的回答后,又上了重要的一课。
junziyang,我已经按照你的方法把JavaComTest.class所在的目录用javaaddpath 加载了,但还是报这个错误。

import JavaComTest;后,我查看import 的内容,已经出现了JavaComTest
import
ans='JavaComTest'
这是不是表明matlab已经把JavaComTest.class给导入了。
为了保险,我又在matlab中手动
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import java.awt.event.*;
但当我运行javacomponent(JavaComTest(),[140,105,280,210],h);仍然出错

javacomponent(JavaComTest(),[140,105,280,210],h);
??? Java exception occurred:
java.lang.NoClassDefFoundError: JavaComTest$1

  at JavaComTest.<init>(JavaComTest.java:12)
真是百思不得其解啊!
 楼主| 发表于 2005-9-27 14:05:54 | 显示全部楼层 来自 陕西西安

Re:[讨论]matlab复杂GUI完全由java实现的可能性。

Simdroid开发平台
addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
String command = e.getActionCommand();
if (command.equals("Press Me"))
setText("Button Pressed");
else
setText("Press Me");
})

这句话生成了一个匿名内部类对象,实现了ActionListener接口.在编译时,会生成
$连接的class文件.JavaComTest$1.
所以会有不止一个.class文件.
发表于 2005-9-27 16:03:29 | 显示全部楼层 来自 四川成都

Re:[讨论]matlab复杂GUI完全由java实现的可能性。

经过千难万苦,终于解决了,再次感谢nostalgica 、junziyang两位大侠。
小弟把经验给大家共享一下,让更多的人少走弯路。

1、在向matlab里嵌入自定义java类时,最好不要用jcreator生成basic application,否则会有意想不到错误(我遇到的就是这样的),觉得用jcreator自己生成java文件最保险(可以避免jcreator自己打的package带来的麻烦)。
2、matlab7.0里的java版本是Java 1.4.2_04,因此最好用jdk 1.4.2_04来编译java文件,我开始用的是jdk1.5编译的class,在matlab里无法 import,虽然后来将环境变量(MATLAB_JAVA)改到jre1.5.0下,可以import由jdk1.5编译的class,但显示有问题,就象junziyang的例子在我的机器上根本看不到button,只是看到一个区域。最后把jdk1.5卸了,装了jdk1.4.2,再编译后,就可以在figure上看到button了,因此,建议大家最好使用jdk1.4.2来编译自定义的类,再嵌入到matlab里。
3、一定要做到junziyang强调的“javaaddpath E:\java;% 假设编译得到的.class文件存于E:\java目录下”,并且该目录下最好包含所有的class(如nostalgica 所说)。
4、最后给大家的建议:不要轻言放弃,多看,多问,多想,多做,相信自己一定可以成功,goodluck!

评分

1

查看全部评分

发表于 2005-9-29 22:17:24 | 显示全部楼层 来自 德国

Re:[讨论]matlab复杂GUI完全由java实现的可能性。

salvsalv总结的内容很好,看来你为了这个程序已经花了不少时间了。这就叫功夫不负有心人。而且我也从中学到了东西。
发表于 2005-9-30 10:23:24 | 显示全部楼层 来自 四川成都

Re:[讨论]matlab复杂GUI完全由java实现的可能性。

Java与Matlab的无缝结合越来越让我着迷,随着对java的了解越深入,越觉得用java来进行matlab下gui开发会大大提高开发效率,节约开发成本。
举个例子:
         要在matlab下显示颜色选择框,用java一个语句就可以实现
     JOptionPane.showMessageDialog('',JColorChooser())

效果图为:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
发表于 2005-9-30 10:41:19 | 显示全部楼层 来自 四川成都

Re:[讨论]matlab复杂GUI完全由java实现的可能性。

如果要改为java窗口的显示风格,可以用
UIManager.setLookAndFeel(javax.swing.plaf.metal.MetalLookAndFeel);
这个图就不贴了,大家可以试一哈,
以前,不知道在哪个地方看到用matlab来编写一个密码框,写了大概有150多行,当时就没信心再看下去,然而用java的JPasswordField类来完成则只要用40多行,这种开发效率是显而易见的。
效果图:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
发表于 2005-9-30 11:00:21 | 显示全部楼层 来自 四川成都

Re:[讨论]matlab复杂GUI完全由java实现的可能性。

记得几个星期前在论坛发过一个贴,"求教如何在matlab下显示有自己图标的窗口",当时得到了cwit的热心回答,然而,用cwit的方法必须要用exescope把sgl.dll和uw_isgl.dll的资源图标进行更换,这种方法使用起来不方便,并且只能显示一种图标,不能实现在不同窗口显示不同图标。而用java则很容易解决。
MyFrame=JFrame();
MyFrame.setTitle('自定义的图标');
MyFrame.setSize(400,400);
icon=ImageIcon('Myicon.gif');
MyFrame.setIconImage(icon.getImage());
MyFrame.setVisible(true);

效果图:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×

评分

1

查看全部评分

发表于 2005-9-30 11:13:34 | 显示全部楼层 来自 四川成都

Re:[讨论]matlab复杂GUI完全由java实现的可能性。

java的魅力不仅在于可以完善matlab的界面,如果能善于利用java的Sytem类,RunTime类,数据库api,等等,可以开发出很多有实用价值的程序。
下面是在fileexchange上下的一个利用java、matlab混编做的一个内存监视器。

效果图:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
发表于 2005-9-30 11:15:37 | 显示全部楼层 来自 四川成都

Re:[讨论]matlab复杂GUI完全由java实现的可能性。

内存监视器的代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×

评分

1

查看全部评分

发表于 2005-9-30 18:46:07 | 显示全部楼层 来自 德国

Re:[讨论]matlab复杂GUI完全由java实现的可能性。

请问salvsalv,你在做什么方面的东西?怎么会用到Matlab和Java这两样东西的?是出于个人爱好吗?还是在做这方面的课题?我对Java比较熟悉,但是对Matlab还只是处于初级水平,了解的不多。我现在要做课程设计,要用Matlab和Simulink。也许Java也会用到呢(如果需要做作界面的话)。
发表于 2005-10-1 09:18:19 | 显示全部楼层 来自 四川成都

Re:[讨论]matlab复杂GUI完全由java实现的可能性。

TO mabaosheng2002:
学习Matlab和Java只是个人爱好,可以说junziyang大侠是我的入门老师,当我第一次看到他用java在matlab里编的一个splash程序时候,被java的强大功能和简洁的风格所深深吸引,之后就一发不可收拾,一边学java,一边试着把java嵌入到matlab中,而看到junziyang和nostalgica两为高手的讨论更是让我振奋。个人觉得:既然mathwork选择了java来做matlab(6.5、7.0)的界面,我们用java在matlab里开发自己的界面的好处自然不言而喻,而且我觉得matlab的编程风格(特别是gui)和java相当类似,只是在matlab里,不支持java的new、null、this等,这些都是很小的问题,你只要稍微改动一下,就能把java程序嵌入到matlab中,既然你熟悉java,相信做matalb、java混编会比较轻松。
发表于 2005-10-5 00:49:34 | 显示全部楼层 来自 德国

Re:[讨论]matlab复杂GUI完全由java实现的可能性。

为了得到我的第一个积分,我把我做的一个java applet小程序给大家看看。希望斑竹能给加分呀。这是类文件,下面是html文件。大家可以运行一下,给提提意见。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×

评分

1

查看全部评分

发表于 2005-10-5 00:51:21 | 显示全部楼层 来自 德国

Re:[讨论]matlab复杂GUI完全由java实现的可能性。

这是一个简单的html文件。只是为了运行一下这个applet。申请加分!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
发表于 2005-10-10 21:36:20 | 显示全部楼层 来自 北京交通大学

Re:[讨论]matlab复杂GUI完全由java实现的可能性。

也发一个利用JGraph在matlab的figure上显示的画图东东。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×

评分

1

查看全部评分

发表于 2005-10-27 18:59:01 | 显示全部楼层 来自 新疆乌鲁木齐

Re:[讨论]matlab复杂GUI完全由java实现的可能性。

salvsalv wrote:
...
2、matlab7.0里的java版本是Java 1.4.2_04,因此最好用jdk 1.4.2_04来编译java文件,我开始用的是jdk1.5编译的class,在matlab里无法 import,虽然后来将环境变量(MATLAB_JAVA)改到jre1.5.0下,可以import由jdk1.5编译的class,但显示有问题,就象junziyang的例子在我的机器上根本看不到button,只是看到一个区域。最后把jdk1.5卸了,装了jdk1.4.2,再编译后,就可以在figure上看到button了,因此,建议大家最好使用jdk1.4.2来编译自定义的类,再嵌入到matlab里。
...
>> version -java
ans =
Java 1.5.0 with Sun Microsystems Inc. Java HotSpot(TM) Client VM mixed mode
是不是在7.1中MATLAB的JAVA版本已经换成了1.5了呢?
发表于 2005-10-29 11:53:15 | 显示全部楼层 来自 天津

Re:[讨论]matlab复杂GUI完全由java实现的可能性。

对。7.1中的java版本是1.5的!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-4-28 20:57 , Processed in 0.044916 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表