打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
用javascript编写swing程序
在QT上可以使用QML语言来描述界面,而QML使用的脚本语言是javascript,不过咱们做java程序的也能使用javascript来开发swing的界面。在jdk1.6中已经带有Mozilla Rhino 的 JavaScript 脚本引擎,下面用javascript编写上一编基于邮件服务器的聊天测试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(
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("关闭");
    button.addActionListener(
            
new JavaAdapter(
                    ActionListener, {
                        actionPerformed : function(event){
                            System.exit(
0);
                        }
                    }
            )
    );
    button.setBounds(
3884355827);
    contentPane.add(button);
    
    button_1 
= new JButton("发送");
    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);

运行效果:


效果还是跟以前一样帅,

只要把规则定义好,java(swing/swt)程序也可以像QT一样,定义一套类似QML的界面描述语言,方便开发中的界面设计。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
【第72题】JAVA高级技术-多线程6(模拟银行系统存钱)
swing/swt可视化开发工具windowbuilder免费了 - pengo - Bl...
Swing文件下载
JScrollPane的使用
用Java编写的标准计算器、科学计算器、时间转换。
《Java语言编程基础立体化实用教程》2-5 成绩查询窗体的实现
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服