<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 59, comments - 244, trackbacks - 0, articles - 0
      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

    用javascript編寫swing程序

    Posted on 2010-12-25 12:30 penngo 閱讀(4490) 評論(2)  編輯  收藏 所屬分類: Java
    在QT上可以使用QML語言來描述界面,而QML使用的腳本語言是javascript,不過咱們做java程序的也能使用javascript來開發(fā)swing的界面。在jdk1.6中已經(jīng)帶有Mozilla Rhino 的 JavaScript 腳本引擎,下面用javascript編寫上一編基于郵件服務(wù)器的聊天測試http://m.tkk7.com/pengo/archive/2010/12/11/340303.html 界面。

    先在程序要指定要解析的腳本,Main.java
    import java.io.FileInputStream;
    import java.io.InputStreamReader;
    import javax.script.Invocable;
    import javax.script.ScriptEngine;
    import javax.script.ScriptEngineManager;
    import javax.swing.UIManager;

    public class Main {
        
    public static void main(String[] args) {
            
    try {
                UIManager
                        .setLookAndFeel(
    "com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
                ScriptEngineManager factory 
    = new ScriptEngineManager();
                
    // 指定腳本語言為javascript,engine支持很多種腳本語言
                ScriptEngine engine = factory.getEngineByName("JavaScript");
                
    // 告訴腳本引擎需要加載的腳本代碼
                InputStreamReader in = new InputStreamReader(new FileInputStream(
                        
    "test.js"));
                engine.eval(in);
                Invocable inv 
    = (Invocable) engine;
                inv.invokeFunction(
    "main");
            } 
    catch (Exception e) {

                e.printStackTrace();
            }
        }
    }

    test.js腳本代碼
    importPackage(javax.swing);
    importPackage(javax.swing.border);
    importPackage(java.awt.event);
    importClass(java.lang.System);

    var contentPane;
    var messagePane;
    var sentPane;
    var button_1;

    function main(){
        var frame 
    = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setBounds(
    100100542506);
        contentPane 
    = new JPanel();
        contentPane.setBorder(
    new EmptyBorder(5555));
        frame.setContentPane(contentPane);
        contentPane.setLayout(
    null);
        
        messagePane 
    = new JTextPane();
        messagePane.setContentType(
    "text/html");
        messagePane.setEditable(
    false);
        var scrollPane1 
    = new JScrollPane(messagePane);
        scrollPane1.setBounds(
    1010506290);
        contentPane.add(scrollPane1);
        
        sentPane 
    = new JEditorPane();
        var scrollPane 
    = new JScrollPane(sentPane);
        scrollPane.setBounds(
    10320506110);
        contentPane.add(scrollPane);
        var button 
    = new JButton("關(guān)閉");
        button.addActionListener(
                
    new JavaAdapter(
                        ActionListener, {
                            actionPerformed : function(event){
                                System.exit(
    0);
                            }
                        }
                )
        );
        button.setBounds(
    3884355827);
        contentPane.add(button);
        
        button_1 
    = new JButton("發(fā)送");
        button_1.setEnabled(
    false);
        
        button_1.setBounds(
    4584355827);
        contentPane.add(button_1);
        
        var button_2 
    = new JButton("配置");
        button_2.setBounds(
    104315230);
        contentPane.add(button_2);
        
        var button_3 
    = new JButton("登錄");
        button_3.setBounds(
    694335230);
        contentPane.add(button_3);
        
        frame.setVisible(
    true);

    運(yùn)行效果:


    效果還是跟以前一樣帥,

    只要把規(guī)則定義好,java(swing/swt)程序也可以像QT一樣,定義一套類似QML的界面描述語言,方便開發(fā)中的界面設(shè)計(jì)。

    附件:源碼

    評論

    # re: 用javascript編寫swing程序  回復(fù)  更多評論   

    2010-12-27 02:15 by Unmi
    很有新意,我也曾經(jīng)對比了各種腳本+界面的做法。

    # re: 用javascript編寫swing程序  回復(fù)  更多評論   

    2010-12-29 19:31 by thebye85
    用JS寫QT,有意思啊
    主站蜘蛛池模板: 亚洲导航深夜福利| 国产亚洲精品91| 亚洲国产成人久久综合一区77 | 亚洲日本va在线视频观看| 亚洲电影免费在线观看| 亚洲色偷精品一区二区三区| 亚洲国产精品成人| 久久成人a毛片免费观看网站| 中文字幕亚洲情99在线| 久久亚洲精品无码观看不卡| 日本XXX黄区免费看| 免费大片av手机看片| 自怕偷自怕亚洲精品| 免费在线观看黄色毛片| 中文字幕在线免费观看| 大桥未久亚洲无av码在线| 亚洲资源在线观看| 又粗又硬免费毛片| 青青视频观看免费99| 三上悠亚在线观看免费| 国产精品亚洲综合久久| 亚洲最大激情中文字幕| 一个人看的在线免费视频| 亚洲宅男天堂a在线| 久久影视综合亚洲| 午夜免费福利在线观看| 免费人妻无码不卡中文字幕系| 在线亚洲v日韩v| 亚洲免费在线视频观看| 亚洲乱码无码永久不卡在线| 四虎影视无码永久免费| 亚洲va中文字幕| 亚洲无限乱码一二三四区| 区三区激情福利综合中文字幕在线一区亚洲视频1 | 亚洲人成电影网站免费| 99久久免费国产精精品| 美美女高清毛片视频黄的一免费 | 中国性猛交xxxxx免费看| 国产偷国产偷亚洲清高APP| 亚洲免费视频播放| 久久精品国产亚洲AV香蕉|