| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 500 人关注过本帖
标题:用Javascript编写Swing程序
只看楼主 加入收藏
立成科技
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2011-1-24
收藏
 问题点数:0 回复次数:0 
用Javascript编写Swing程序
在QT上可以使用QML语言来描述界面,而QML使用的脚本语言是javascript,不过咱们做java程序的也能使用javascript来开发swing的界面。在jdk1.6中已经带有Mozilla Rhino 的 JavaScript 脚本引擎,下面用javascript编写基于邮件服务器的测试聊天界面。YPP就爱技术网

  先在程序要指定要解析的脚本,Main.javaYPP就爱技术网

import 就爱技术网
import 就爱技术网
import javax.script.Invocable;YPP就爱技术网
import javax.script.ScriptEngine;YPP就爱技术网
import javax.script.ScriptEngineManager;YPP就爱技术网
import javax.swing.UIManager;YPP就爱技术网
YPP就爱技术网
public class Main {YPP就爱技术网
    public static void main(String[] args) {YPP就爱技术网
        try {YPP就爱技术网
            UIManagerYPP就爱技术网
                    .setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");YPP就爱技术网
            ScriptEngineManager factory = new ScriptEngineManager();YPP就爱技术网
            // 指定脚本语言为javascript,engine支持很多种脚本语言YPP就爱技术网
            ScriptEngine engine = factory.getEngineByName("JavaScript");YPP就爱技术网
            // 告诉脚本引擎需要加载的脚本代码YPP就爱技术网
            InputStreamReader in = new InputStreamReader(new FileInputStream(YPP就爱技术网
                    "test.js"));YPP就爱技术网
            engine.eval(in);YPP就爱技术网
            Invocable inv = (Invocable) engine;YPP就爱技术网
            inv.invokeFunction("main");YPP就爱技术网
        } catch (Exception e) {YPP就爱技术网
YPP就爱技术网
            e.printStackTrace();YPP就爱技术网

test.js脚本代码 importPackage(javax.swing);YPP就爱技术网
importPackage(javax.swing.border);YPP就爱技术网
importPackage(java.awt.event);YPP就爱技术网
importClass(java.lang.System);YPP就爱技术网
YPP就爱技术网
var contentPane;YPP就爱技术网
var messagePane;YPP就爱技术网
var sentPane;YPP就爱技术网
var button_1;YPP就爱技术网
YPP就爱技术网
function main(){YPP就爱技术网
    var frame = new JFrame();YPP就爱技术网
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);YPP就爱技术网
    frame.setBounds(100, 100, 542, 506);YPP就爱技术网
    contentPane = new JPanel();YPP就爱技术网
    contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));YPP就爱技术网
    frame.setContentPane(contentPane);YPP就爱技术网
    contentPane.setLayout(null);YPP就爱技术网
    YPP就爱技术网
    messagePane = new JTextPane();YPP就爱技术网
    messagePane.setContentType("text/html");YPP就爱技术网
    messagePane.setEditable(false);YPP就爱技术网
    var scrollPane1 = new JScrollPane(messagePane);YPP就爱技术网
    scrollPane1.setBounds(10, 10, 506, 290);YPP就爱技术网
    contentPane.add(scrollPane1);YPP就爱技术网
    YPP就爱技术网
    sentPane = new JEditorPane();YPP就爱技术网
    var scrollPane = new JScrollPane(sentPane);YPP就爱技术网
    scrollPane.setBounds(10, 320, 506, 110);YPP就爱技术网
    contentPane.add(scrollPane);YPP就爱技术网
    var button = new JButton("关闭");YPP就爱技术网
    button.addActionListener(YPP就爱技术网
            new JavaAdapter(YPP就爱技术网
                    ActionListener, {YPP就爱技术网
                        actionPerformed : function(event){YPP就爱技术网
                            System.exit(0);YPP就爱技术网
                        }YPP就爱技术网
                    }YPP就爱技术网
            )YPP就爱技术网
    );YPP就爱技术网
    button.setBounds(388, 435, 58, 27);YPP就爱技术网
    contentPane.add(button);YPP就爱技术网
    YPP就爱技术网
    button_1 = new JButton("发送");YPP就爱技术网
    button_1.setEnabled(false);YPP就爱技术网
    YPP就爱技术网
    button_1.setBounds(458, 435, 58, 27);YPP就爱技术网
    contentPane.add(button_1);YPP就爱技术网
    YPP就爱技术网
    var button_2 = new JButton("配置");YPP就爱技术网
    button_2.setBounds(10, 431, 52, 30);YPP就爱技术网
    contentPane.add(button_2);YPP就爱技术网
    YPP就爱技术网
    var button_3 = new JButton("登录");YPP就爱技术网
    button_3.setBounds(69, 433, 52, 30);YPP就爱技术网
    contentPane.add(button_3);YPP就爱技术网
    YPP就爱技术网
    frame.setVisible(true);YPP就爱技术网
}YPP就爱技术网

  运行效果:YPP就爱技术网

YPP就爱技术网

  效果还不错吧!YPP就爱技术网

  只要把规则定义好,java(swing/swt)程序也可以像QT一样,定义一套类似QML的界面描述语言,方便开发中的界面设计。YPP就爱技术网
搜索更多相关主题的帖子: javascript 服务器 
2011-01-29 20:49
快速回复:用Javascript编写Swing程序
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016699 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved