找回密码
 注册
Simdroid-非首页
查看: 1586|回复: 35

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

[复制链接]
发表于 2005-8-13 20:41:18 | 显示全部楼层 |阅读模式 来自 陕西西安
遗传算法的界面就是一个很好的例子(gatool)

这方面的一些应用,可以参见我以前发过的一些贴子,比如用java的gui组件实现对滚轮的响应。

如果有朋友有更多的应用实例,或者觉得存在哪些问題,欢迎发来交流。

评分

1

查看全部评分

发表于 2005-8-14 01:36:20 | 显示全部楼层 来自 上海

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

Simdroid开发平台
能否详细,具体一点?考虑实际的可行性,移植性,兼容性,扩展能力,运行效率,开发速度等等?
谢谢!
 楼主| 发表于 2005-8-14 11:13:31 | 显示全部楼层 来自 陕西西安

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

这些方面还不清楚。所以想请做过的朋友给点建议。
发表于 2005-8-20 08:55:21 | 显示全部楼层 来自 天津

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

据说Matlab从6.0以后的界面都是用Java作的。Java的优势之一就是可移植性好,调用Java的m文件可以跟正常文件一样由mcc编译,所需的.class也同时打包到编译后的文件中。作出来的简单界面由mcc编译后运行没有问题,复杂的我没有试过。附件中是我作过的一个简单界面。仅用到了javax.swing.*包中的JFrame和JButton控件。
      个人认为,Matlab和Java混编是很有发展潜力的。这样既可以利用Matlab的矩阵计算工具、工具箱和世界各地的大牛们编写的专业函数,也可以利用Java丰富的界面元素来构建专业的界面。在Matlab中还可以利用Java的网络功能,实现对网络的访问。网上可以找到这方面的材料,记得Mathworks的文件交流中心就有相关的例子。感兴趣的可以到http://www.mathworks.com/matlabcentral/fileexchange/loadFile.do?objectId=1880&objectType=file看看。
      偶对这方面比较感兴趣,感谢版主发起讨论。
***************************
Qun HAN
Tianjin University, P.R.China
欢迎多交流!

本帖子中包含更多资源

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

×

评分

1

查看全部评分

发表于 2005-8-22 15:37:17 | 显示全部楼层 来自 浙江杭州

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

楼上的厉害,原来matlab上面的那个是你写的啊。。。

http://www.mathworks.com/matlabcentral/fileexchange/loadFile.do?objectId=6702&objectType=file
发表于 2005-8-24 15:28:18 | 显示全部楼层 来自 天津

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

这里是一个调用Matlab自带的jar包生成数据表的例子。http://www.mathworks.com/matlabcentral/fileexchange/loadFile.do?objectId=5752&objectType=file
Matlab的GUIDE没有Table控件,借鉴上例和Matlab的javacomponent函数,就可以给你的MATLAB GUI添加一个显示数据的表格了。有兴趣的试试看!
发表于 2005-9-14 18:18:38 | 显示全部楼层 来自 吉林长春

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

对java控件的监听事件响应在matlab的figure上应用情况怎么样?谁有这方面的经验,介绍点。
发表于 2005-9-17 15:55:33 | 显示全部楼层 来自 北京东城

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

上面几个例子都研究过了,感觉这样来做很好
呵呵,打算做一个试试,开始学java!
发表于 2005-9-19 10:25:49 | 显示全部楼层 来自 天津

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

Java是不支持面向过程编程的。但在Matlab中可以实现Java的面向过程编程,用Matlab的语法作出Java界面。下图是偶编写的一个软件中的一部分,除了主窗口和下面三个Button是用Matlab的GUI作的外,其他控件都是用Java作的(包括TabbedPanel、标签面板、单选按钮、按钮、表格)。

本帖子中包含更多资源

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

×

评分

1

查看全部评分

发表于 2005-9-19 11:07:43 | 显示全部楼层 来自 新疆乌鲁木齐

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

佩服...MATLAB的一系列主GUI界面应该都与JAVA有关,老兄这个界面让JAVA和MATLAB结合的非常自然,真的很漂亮!前两天在研学上看到有人问起如何在MATLAB内部实现你这个界面中"前向信号","后向信号"两个复面板,讨论来讨论去没太好的结果,老兄可以介绍一下吗?
 楼主| 发表于 2005-9-19 12:42:17 | 显示全部楼层 来自 陕西西安

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

发表于 2005-9-19 17:12:21 | 显示全部楼层 来自 天津

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

用在Matlab中调用Java api编写好界面,放到一个JPanel中,然后用javacomponent添加到Matlab窗口中即可!
bainhome wrote:
佩服...MATLAB的一系列主GUI界面应该都与JAVA有关,老兄这个界面让JAVA和MATLAB结合的非常自然,真的很漂亮!前两天在研学上看到有人问起如何在MATLAB内部实现你这个界面中"前向信号","后向信号"两个复面板,讨论来讨论去没太好的结果,老兄可以介绍一下吗?
发表于 2005-9-22 00:29:25 | 显示全部楼层 来自 北京东城

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

想请教一下,一个窗口怎么同时放Matlab的控件和java的控件?
比如我想建立一个figure,然后在figure上面放几个java的按钮,下面是一个matlab的axes对象,用这个按钮来控制axes对象上的一些子对象。
我看了一下junziyang兄的那个Jbutton的例子,实际上figure和java产生的Panel是分离的,只是把Figure隐藏起来了
发表于 2005-9-22 11:00:33 | 显示全部楼层 来自 天津

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

你可以用GUIDE或直接在m文件中编程来向figure上添加Matlab控件。java控件可以在m文件中编写好后用javacomponent命令添加到figure上。JButton例子中的figure是没用的。添加它的目的是为解决纯java界面经mcc编译后的exe文件执行时界面一闪即逝问题的。如果没有该隐藏的figure,mcc编译后点击exe文件,界面出来一闪就关闭了。添加一个隐藏的figure可以解决。这是Matlab的一个bug,目前还没有更好的解决办法。
WaitingForMe wrote:
想请教一下,一个窗口怎么同时放Matlab的控件和java的控件?
比如我想建立一个figure,然后在figure上面放几个java的按钮,下面是一个matlab的axes对象,用这个按钮来控制axes对象上的一些子对象。
我看了一下junziyang兄的那个Jbutton的例子,实际上figure和java产生的Panel是分离的,只是把Figure隐藏起来了
发表于 2005-9-22 12:28:59 | 显示全部楼层 来自 北京东城

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

javacomponent这个是Matlab中的命令?哪个版本的?我在6.5里没有找到这个命令
=============================================

MATLAB can directly interact with Java classes. A new feature in MATLAB R14 allows you to dynamically add new Java classes to MATLAB. This is done using the javaclasspath function.
发表于 2005-9-22 13:31:44 | 显示全部楼层 来自 天津

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

7.0版本以上才有的
发表于 2005-9-22 13:41:55 | 显示全部楼层 来自 天津

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

Matlab中的Figure上可以直接添加用Java编写好的控件。控件的Listener仍然可以对事件进行相应。下面例子现在Java中写JButton的子类,为其添加了监听器。然后在Matlab中用javacomponent将之添加大figure上。
例:
h=figure;
javaaddpath E:\java;% 假设编译得到的.class文件存于E:\java目录下
import JavaComTest;
javacomponent(JavaComTest(),[140,105,280,210],h);

以下是java源码。用java编译器编译后存于E:\java
// JavaComTest.java
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import java.awt.event.*;

public class JavaComTest extends JButton
{
    public JavaComTest(){
        setText("Press Me");
        addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e){
                String command = e.getActionCommand();
                if (command.equals("Press Me"))
                setText("Button Pressed");
                else
                    setText("Press Me");               
            }
        });
    }
   /** public static void main(String[] args)
    {
        JFrame frame = new JFrame("Java Comeponent Listener Test in Matlab");
        JPanel panel=new JPanel();
        JavaComTest jt = new JavaComTest();
        
        panel.add(jt);
        frame.getContentPane().add(panel);
        frame.pack();
        frame.setVisible(true);
    }*/
}

评分

1

查看全部评分

发表于 2005-9-26 09:50:47 | 显示全部楼层 来自 四川成都

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

小弟初学java,有个问题一直很迷惑,向nostalgica和热心的junziyang请教哈。getClass() 有什么作用?

我在matlab里做了个实验

mainFrame=JFrame;
mainFrame.getClass()
ans=class javax.swing.JFrame
mainFrame.getClass().getName()
ans= javax.swing.JFrame
这两个结果很相似,它们的区别在哪?
由于mainFrame.getClass()返回的是javax.swing.JFrame,我用javax.swing.JFrame.getName() 却报错
前几天看了一下用java改图标的程序中,用到了getClass().getSource()来加载图标,我的理解是java中的getClass()所得到与win32 API中窗口句柄类似,win32 API中用于指定向哪个窗口加载资源,java中是指定向哪个Component加载资源,不知道我理解的对不对,请两位高手指教一下,最后还有个想法,可以用javacomponent向figure上加载Component,那matlab能不能向java的JFrame或Panel上加载控件?

我按照junziyang的步骤运行出现如下错误:
javacomponent(JavaComTest(),[140,105,280,210],h);
??? Java exception occurred:
java.lang.NoClassDefFoundError: JavaComTest$1

  at JavaComTest.<init>(JavaComTest.java:12)
不知道是什么原因?
发表于 2005-9-26 22:25:13 | 显示全部楼层 来自 天津

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

出错的原因是没有找到需要的类。确保编译得到的类JavaComTest.class存于E:\java目录下,并在调用该类前运行:javaaddpath E:\java;% 假设编译得到的.class文件存于E:\java目录下
我按照junziyang的步骤运行出现如下错误:
javacomponent(JavaComTest(),[140,105,280,210],h);
??? Java exception occurred:
java.lang.NoClassDefFoundError: JavaComTest$1

  at JavaComTest.<init>(JavaComTest.java:12)
不知道是什么原因?
 楼主| 发表于 2005-9-27 02:24:59 | 显示全部楼层 来自 陕西西安

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

getClass(),得到的是Class类的对象,
getName()是Class类的方法,得到的是java的String类.
getClass().getSource(),
加载本地资源用
InputStream getResourceAsStream(String name)
这是Class类的方法,对任意java对象都可以有
a.getClass().getResourceAsStream(name)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-28 01:01 , Processed in 0.069598 second(s), 15 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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