From 227b967edeb82699ca8858ef3c1df2521d3e6fc5 Mon Sep 17 00:00:00 2001 From: richie Date: Wed, 6 Mar 2019 10:06:23 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84=E4=B8=80=E4=B8=AA=E7=A4=BA?= =?UTF-8?q?=E4=BE=8B=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/fr/design/ui/ModernUIPane.java | 12 ++++++++++-- .../test/java/com/fr/design/ui/ModernUIPaneTest.java | 8 ++++---- .../src/test/resources/com/fr/design/ui/demo.html | 10 ++++++---- 3 files changed, 20 insertions(+), 10 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/ui/ModernUIPane.java b/designer-base/src/main/java/com/fr/design/ui/ModernUIPane.java index 4df38d111..ac5e4922d 100644 --- a/designer-base/src/main/java/com/fr/design/ui/ModernUIPane.java +++ b/designer-base/src/main/java/com/fr/design/ui/ModernUIPane.java @@ -7,6 +7,8 @@ import com.teamdev.jxbrowser.chromium.BrowserPreferences; import com.teamdev.jxbrowser.chromium.JSValue; import com.teamdev.jxbrowser.chromium.events.FinishLoadingEvent; import com.teamdev.jxbrowser.chromium.events.LoadAdapter; +import com.teamdev.jxbrowser.chromium.events.ScriptContextAdapter; +import com.teamdev.jxbrowser.chromium.events.ScriptContextEvent; import com.teamdev.jxbrowser.chromium.swing.BrowserView; import javax.swing.*; @@ -21,7 +23,7 @@ import java.awt.*; public class ModernUIPane extends BasicPane { private Browser browser; - private String namespace = "NS"; + private String namespace = "Pool"; private String variable = "data"; private String expression = "update()"; @@ -54,6 +56,13 @@ public class ModernUIPane extends BasicPane { private void initializeBrowser() { browser = new Browser(); + // 初始化的时候,就把命名空间对象初始化好,确保window.a.b.c("a.b.c"为命名空间)对象都是初始化过的 + browser.addScriptContextListener(new ScriptContextAdapter() { + @Override + public void onScriptContextCreated(ScriptContextEvent event) { + event.getBrowser().executeJavaScript(String.format(ModernUI.SCRIPT_STRING, namespace)); + } + }); } @Override @@ -67,7 +76,6 @@ public class ModernUIPane extends BasicPane { @Override public void onFinishLoadingFrame(FinishLoadingEvent event) { if (event.isMainFrame()) { - event.getBrowser().executeJavaScript(String.format(ModernUI.SCRIPT_STRING, namespace)); JSValue ns = event.getBrowser().executeJavaScriptAndReturnValue("window." + namespace); ns.asObject().setProperty(variable, t); } diff --git a/designer-base/src/test/java/com/fr/design/ui/ModernUIPaneTest.java b/designer-base/src/test/java/com/fr/design/ui/ModernUIPaneTest.java index c0472a8e8..1489cf226 100644 --- a/designer-base/src/test/java/com/fr/design/ui/ModernUIPaneTest.java +++ b/designer-base/src/test/java/com/fr/design/ui/ModernUIPaneTest.java @@ -16,13 +16,13 @@ import java.awt.event.ActionListener; public class ModernUIPaneTest { public static void main(String... args) { - JFrame frame = new JFrame(); + final JFrame frame = new JFrame(); frame.setSize(1200, 800); JPanel contentPane = (JPanel) frame.getContentPane(); // 是否需要开启调试窗口 DesignerEnvManager.getEnvManager().setOpenDebug(true); final ModernUIPane pane = new ModernUIPane.Builder() - .withHTML(IOUtils.readResourceAsString("/com/fr/design/ui/demo.html")).namespace("MyNS").build(); + .withHTML(IOUtils.readResourceAsString("/com/fr/design/ui/demo.html")).namespace("Pool").build(); contentPane.add(pane, BorderLayout.CENTER); Model model = new Model(); @@ -32,14 +32,14 @@ public class ModernUIPaneTest { JPanel panel = new JPanel(new FlowLayout()); contentPane.add(panel, BorderLayout.SOUTH); - JButton button = new JButton("点击我可以看到JAVA控制台输出的新值:99"); + JButton button = new JButton("点击我可以看到Swing的弹框,输出填写的信息"); panel.add(button); button.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { Model returnValue = pane.update(); if (returnValue != null) { - System.out.println(returnValue.getAge()); + JOptionPane.showMessageDialog(frame, String.format("姓名为:%s,年龄为:%d", returnValue.getName(), returnValue.getAge())); } } }); diff --git a/designer-base/src/test/resources/com/fr/design/ui/demo.html b/designer-base/src/test/resources/com/fr/design/ui/demo.html index 10fbdc3ca..144c8661e 100644 --- a/designer-base/src/test/resources/com/fr/design/ui/demo.html +++ b/designer-base/src/test/resources/com/fr/design/ui/demo.html @@ -4,14 +4,16 @@ Title
测试页面,请点击最下面的按钮
+ + \ No newline at end of file