使用 JavaScript 脚本化 Java 应用
2010-02-24 00:00:00 来源:WEB开发网在 initEnv 中,我们创建一个新的插件,这个插件负责加载 menubar.js 脚本,然后将这个插件安装在管理器上,最后我们将一个名为 pluginList 的 List 对象放到这个插件的上下文中。
然后,我们来到 MainFrame.java 这个类中,在 initUI() 方法中,我们将 menubar 的实例 mBar 公开给脚本:
代码 5. 公开 JMenuBar 实例
Plugin pMenuBar = TodoPluginManager.getInstance().getPlugin("menubar");
pMenuBar.execute("_customizeMenuBar_", mbar);
好了,我们来看下一步:
提供第一个脚本
我们提供的第一个脚本很简单,为宿主程序添加一个菜单项,然后通过此菜单的事件处理器,我们让该脚本弹出一个新的窗口,这个窗口显示目前被加载到应用中的插件的列表。
代码 6. 第一个脚本
importPackage(java.awt, java.awt.event)
importPackage(Packages.javax.swing)
importClass(java.lang.System)
importClass(java.lang.reflect.Constructor)
function buildPluginMenu(){
var menuPlugin = new JMenu();
menuPlugin.setText("Plugin");
var menuItemListPlugin = new JMenuItem();
menuItemListPlugin.setText("list plugins");
menuItemListPlugin.addActionListener(
new JavaAdapter(
ActionListener, {
actionPerformed : function(event){
var plFrame = new JFrame("plugins list");
var epNote = new JEditorPane();
var s = "";
for(var i = 0; i<pluginList.size();i++){
var pi = pluginList.get(i);
s += pi.getName()+":"+pi.getDescription()+"\n";
}
epNote.setText(s);
epNote.setEditable(false);
plFrame.add(epNote, BorderLayout.CENTER);
plFrame.setSize(200,200);
plFrame.setLocationRelativeTo(null);
plFrame.setVisible(true);
}
}
)
);
menuPlugin.add(menuItemListPlugin);
return menuPlugin;
}
//this function will be invoked from java code, MainFrame...
function _customizeMenuBar_(menuBar){
menuBar.add(buildPluginMenu());
}
Tags:使用 JavaScript 脚本
编辑录入:爽爽 [复制链接] [打 印]更多精彩
赞助商链接