日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

用javascript編寫swing程序

系統(tǒng) 2947 0

在QT上可以使用QML語言來描述界面,而QML使用的腳本語言是javascript,不過咱們做java程序的也能使用javascript來開發(fā) swing的界面。在jdk1.6中已經(jīng)帶有Mozilla Rhino 的 JavaScript 腳本引擎,下面用javascript編寫上一編 基于郵件服務(wù)器的聊天測試http://www.blogjava.net/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(
100 ,? 100 ,? 542 ,? 506 );
????contentPane?
= ? new ?JPanel();
????contentPane.setBorder(
new ?EmptyBorder( 5 ,? 5 ,? 5 ,? 5 ));
????frame.setContentPane(contentPane);
????contentPane.setLayout(
null );
????
????messagePane?
= ? new ?JTextPane();
????messagePane.setContentType(
" text/html " );
????messagePane.setEditable(
false );
????var?scrollPane1?
= ? new ?JScrollPane(messagePane);
????scrollPane1.setBounds(
10 ,? 10 ,? 506 ,? 290 );
????contentPane.add(scrollPane1);
????
????sentPane?
= ? new ?JEditorPane();
????var?scrollPane?
= ? new ?JScrollPane(sentPane);
????scrollPane.setBounds(
10 ,? 320 ,? 506 ,? 110 );
????contentPane.add(scrollPane);
????var?button?
= ? new ?JButton( " 關(guān)閉 " );
????button.addActionListener(
????????????
new ?JavaAdapter(
????????????????????ActionListener,?{
????????????????????????actionPerformed?:?function(event){
????????????????????????????System.exit(
0 );
????????????????????????}
????????????????????}
????????????)
????);
????button.setBounds(
388 ,? 435 ,? 58 ,? 27 );
????contentPane.add(button);
????
????button_1?
= ? new ?JButton( " 發(fā)送 " );
????button_1.setEnabled(
false );
????
????button_1.setBounds(
458 ,? 435 ,? 58 ,? 27 );
????contentPane.add(button_1);
????
????var?button_2?
= ? new ?JButton( " 配置 " );
????button_2.setBounds(
10 ,? 431 ,? 52 ,? 30 );
????contentPane.add(button_2);
????
????var?button_3?
= ? new ?JButton( " 登錄 " );
????button_3.setBounds(
69 ,? 433 ,? 52 ,? 30 );
????contentPane.add(button_3);
????
????frame.setVisible(
true );
}?


運(yùn)行效果:
用javascript編寫swing程序

效果還是跟以前一樣帥,

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

用javascript編寫swing程序


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 永兴县| 高雄市| 达州市| 无锡市| 班戈县| 龙陵县| 屯门区| 巧家县| 博爱县| 瑞金市| 土默特右旗| 丽水市| 红桥区| 陆良县| 黄浦区| 确山县| 晋州市| 大悟县| 卓尼县| 开远市| 伊通| 长兴县| 建始县| 秦安县| 原阳县| 越西县| 客服| 土默特右旗| 怀化市| 岳普湖县| 东乌珠穆沁旗| 鄂尔多斯市| 台州市| 安义县| 资溪县| 汉沽区| 治多县| 子长县| 罗田县| 望奎县| 元朗区|