Javascript 为java应用程序创建HTML/JS接口

Javascript 为java应用程序创建HTML/JS接口,javascript,java,jquery,html,css,Javascript,Java,Jquery,Html,Css,我正在寻找一种从html/javascript甚至jquery创建java应用程序接口的方法 我已经看到很多关于这个主题的帖子,主要是关于jxbrowser,这是一个非常好的库,但是如果我想在商业上使用它,我必须购买一个许可证 但是我没有找到像jxbrowser这样简单的库来使用。基本上,我查找了一个教程,我看到了: HTML: <!DOCTYPE html> <html> <head> <meta charset="utf-8" />

我正在寻找一种从html/javascript甚至jquery创建java应用程序接口的方法

我已经看到很多关于这个主题的帖子,主要是关于jxbrowser,这是一个非常好的库,但是如果我想在商业上使用它,我必须购买一个许可证

但是我没有找到像jxbrowser这样简单的库来使用。基本上,我查找了一个教程,我看到了:

HTML:

<!DOCTYPE html>
<html>
<head>
   <meta charset="utf-8" />
   <title>Registration Form</title>
   <link href="http://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css" rel="stylesheet">
   <link href='http://fonts.googleapis.com/css?family=Roboto:300' rel='stylesheet' type='text/css'>
   <script src="http://code.jquery.com/jquery-1.11.1.min.js"></script>
   <script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
   <style>
       body{
           font:12px/15px Roboto, "Helvetica Neue", Helvetica, sans-serif;
       }
       select,
       input,
       .btn {
           font-family: "Helvetica Neue",Helvetica,Arial,sans-serif;
       }
       #wrapper{
           margin:0 auto;
       }
       .main-form {
           width: 360px;
           min-height: 360px;
           background: #fff;
           border-radius: 60px;
           margin:0px auto 20px;
           padding: 20px;
       }
       .form-logo {
           font-size: 100px;
           color: #708090;
       }
   </style>
</head>
<body>
<script>
function newAccount() {
   var firstName = document.getElementById("firstname").value;
   var lastName = document.getElementById("lastname").value;
   var phone = document.getElementById("phone").value;
   var email = document.getElementById("email").value;
   // Call Java callback function and pass text fields values.
   onCreateAccount(firstName, lastName, phone, email);
}
</script>
<div id="wrapper">
   <div class="main-form">
       <form action="#" method="POST">
           <fieldset>
               <div class="text-center">
                   <span class="form-logo glyphicon glyphicon-user"></span>
               </div>
               <div class="form-body">
                   <h1 class="form-title text-center">New Account</h1>
                   <div class="form-group">
                       <input class="form-control" type="text" id="firstname" name="firstname" placeholder="First Name">
                   </div>
                   <div class="form-group">
                       <input class="form-control" type="text" id="lastname" name="surname" placeholder="Last Name">
                   </div>
                   <div class="form-group">
                       <input class="form-control" type="text" id="phone" name="phone" placeholder="Phone">
                   </div>
                   <div class="form-group">
                       <input class="form-control" type="email" id="email" name="email" placeholder="Email">
                   </div>
                   <div class="form-group text-center">
                       <button class="btn btn-default btn-lg" type="button" onclick="newAccount();">New Account</button>
                   </div>
               </div>
           </fieldset>
       </form>
   </div>
</div>
</body>
</html>

登记表
身体{
字体:12px/15px Roboto,“Helvetica Neue”,Helvetica,无衬线;
}
选择,
输入,
.btn{
字体系列:“Helvetica Neue”,Helvetica,Arial,无衬线;
}
#包装纸{
保证金:0自动;
}
.主要形式{
宽度:360px;
最小高度:360px;
背景:#fff;
边界半径:60px;
利润率:0px自动20px;
填充:20px;
}
.表格标志{
字体大小:100px;
颜色:#708090;
}
函数newAccount(){
var firstName=document.getElementById(“firstName”).value;
var lastName=document.getElementById(“lastName”).value;
var phone=document.getElementById(“phone”).value;
var email=document.getElementById(“email”).value;
//调用Java回调函数并传递文本字段值。
onCreateCount(名字、姓氏、电话、电子邮件);
}
新帐户
新帐户
爪哇:

import com.teamdev.jxbrowser.chromium.Browser;
import com.teamdev.jxbrowser.chromium.BrowserFunction;
import com.teamdev.jxbrowser.chromium.JSValue;
import com.teamdev.jxbrowser.chromium.swing.BrowserView;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.concurrent.atomic.AtomicReference;
public class HTMLUISample {
   public static void main(String[] args) {
       final JFrame frame = new JFrame("HTMLUISample");
       final JButton newAccountButton = new JButton("New Account...");
       newAccountButton.addActionListener(new ActionListener() {
           @Override
           public void actionPerformed(ActionEvent e) {
               Account account = createAccount(frame);
               // Displays created account's details
               JOptionPane.showMessageDialog(frame, "Created Account: " + account);
           }
       });
       JPanel contentPane = new JPanel();
       contentPane.add(newAccountButton);
       frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
       frame.add(contentPane, BorderLayout.CENTER);
       frame.setSize(300, 75);
       frame.setLocationRelativeTo(null);
       frame.setVisible(true);
   }
   private static Account createAccount(JFrame parent) {
       final AtomicReference<Account> result = new AtomicReference<Account>();
       final JDialog dialog = new JDialog(parent, "New Account", true);
       // Create Browser instance.
       final Browser browser = new Browser();
       // Register Java callback function that will be invoked from JavaScript
       // when user clicks New Account button.
       browser.registerFunction("onCreateAccount", new BrowserFunction() {
           @Override
           public JSValue invoke(JSValue... args) {
               // Read text field values received from JavaScript.
               String firstName = args[0].getString();
               String lastName = args[1].getString();
               String phone = args[2].getString();
               String email = args[3].getString();
               // Create a new Account instance.
               result.set(new Account(firstName, lastName, phone, email));
               // Close dialog.
               dialog.setVisible(false);
               // Return undefined (void) to JavaScript.
               return JSValue.createUndefined();
           }
       });
       // Load HTML with dialog's HTML+CSS+JavaScript UI.
       browser.loadURL("file://<path_to_file>/index.html");
       dialog.addWindowListener(new WindowAdapter() {
           @Override
           public void windowClosing(WindowEvent e) {
               // Dispose Browser instance because we don't need it anymore.
               browser.dispose();
               // Close New Account dialog.
               dialog.setVisible(false);
               dialog.dispose();
           }
       });
       dialog.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
       // Embed Browser Swing component into the dialog.
       dialog.add(new BrowserView(browser), BorderLayout.CENTER);
       dialog.setSize(400, 500);
       dialog.setResizable(false);
       dialog.setLocationRelativeTo(parent);
       dialog.setVisible(true);
       return result.get();
   }
   public static class Account {
       public final String firstName;
       public final String lastName;
       public final String phone;
       public final String email;
       public Account(String firstName, String lastName, String phone, String email) {
           this.firstName = firstName;
           this.lastName = lastName;
           this.phone = phone;
           this.email = email;
       }
       @Override
       public String toString() {
           return "Account{" +
                   "firstName='" + firstName + '\'' +
                   ", lastName='" + lastName + '\'' +
                   ", phone='" + phone + '\'' +
                   ", email='" + email + '\'' +
                   '}';
       }
   }
}
导入com.teamdev.jxbrowser.chromium.Browser;
导入com.teamdev.jxbrowser.chromium.browser函数;
导入com.teamdev.jxbrowser.chromium.JSValue;
导入com.teamdev.jxbrowser.chromium.swing.BrowserView;
导入javax.swing.*;
导入java.awt.*;
导入java.awt.event.ActionEvent;
导入java.awt.event.ActionListener;
导入java.awt.event.WindowAdapter;
导入java.awt.event.WindowEvent;
导入java.util.concurrent.AtomicReference;
公共类HTML示例{
公共静态void main(字符串[]args){
最终JFrame=新JFrame(“HTMLUISample”);
最终JButton newAccountButton=新JButton(“新帐户…”);
newAccountButton.addActionListener(新ActionListener(){
@凌驾
已执行的公共无效操作(操作事件e){
Account=CreateCount(框架);
//显示已创建帐户的详细信息
showMessageDialog(框架,“已创建帐户:”+帐户);
}
});
JPanel contentPane=新的JPanel();
contentPane.add(newAccountButton);
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.add(contentPane、BorderLayout.CENTER);
框架。设置尺寸(300,75);
frame.setLocationRelativeTo(空);
frame.setVisible(true);
}
私有静态帐户CreateCount(JFrame父级){
最终AtomicReference结果=新的AtomicReference();
最终JDialog对话框=新JDialog(父级,“新帐户”,true);
//创建浏览器实例。
最终浏览器=新浏览器();
//注册将从JavaScript调用的Java回调函数
//当用户单击“新建帐户”按钮时。
registerFunction(“onCreateCount”,新的BrowserFunction(){
@凌驾
公共JSValue调用(JSValue…args){
//读取从JavaScript接收的文本字段值。
String firstName=args[0]。getString();
字符串lastName=args[1]。getString();
字符串phone=args[2]。getString();
字符串email=args[3]。getString();
//创建一个新帐户实例。
结果.设置(新帐户(名字、姓氏、电话、电子邮件));
//关闭对话框。
对话框.setVisible(false);
//将未定义(void)返回到JavaScript。
返回JSValue.createUndefined();
}
});
//使用dialog的HTML+CSS+JavaScript UI加载HTML。
browser.loadURL(“file:///index.html");
addWindowListener(新的WindowAdapter(){
@凌驾
公共无效窗口关闭(WindowEvent e){
//处置浏览器实例,因为我们不再需要它。
browser.dispose();
//关闭“新建帐户”对话框。
对话框.setVisible(false);
dialog.dispose();
}
});
setDefaultCloseOperation(WindowConstants.DO\u NOTHING\u ON\u CLOSE);
//将浏览器Swing组件嵌入到对话框中。
添加(新浏览器视图,BorderLayout.CENTER);
对话框。设置大小(400500);
对话框。可设置大小(false);
对话框。setLocationRelativeTo(父级);
对话框.setVisible(true);
返回result.get();
}
公共静态类帐户{
公共最终字符串名;
公共最终字符串lastName;
公共最终字符串电话;
公开最终字符串电子邮件;
公共帐户(字符串firstName、字符串lastName、字符串phone、字符串email){
this.firstName=firstName;
this.lastName=lastName;
this.phone=电话;
this.email=电子邮件;
}
@凌驾
公共字符串toString(){
返回“帐户{”+
“firstName=”+firstName+“\”+
“,lastName='”+lastName+'\''+
“,phone=”+phone+“\”+
“,email='”+em