2013-09-26 71 views
1

我有FXML佈局,我想補充的外部JS文件(如src="http://blablabla.org/bla.js"在HTTP),我試過如下:如何將外部JS腳本導入到FXML佈局?

<?xml version="1.0" encoding="UTF-8"?> 
<?language javascript?> 

<?import java.lang.*?> 
<?import javafx.scene.*?> 
<?import javafx.scene.control.*?> 
<?import javafx.scene.layout.*?> 

<AnchorPane id="AnchorPane" prefHeight="200" prefWidth="320" xmlns:fx="http://javafx.com/fxml"> 
<children> 
    <Button id="button" layoutX="126" layoutY="90" text="Click Me!" fx:id="button" 
      onAction="changeButtonLabel(event);"/> 
    <Label id="label" layoutX="126" layoutY="120" minHeight="16" minWidth="69" prefHeight="16" prefWidth="69" 
      fx:id="label"/> 
</children> 

<fx:script source="http://localhost:8080/TestApplication/main_script.js"/> 

<stylesheets> 
    <String fx:value="hive://localhost:8080/TestApplication/main.css" /> 
</stylesheets> 
</AnchorPane> 

但FXML返回我以下錯誤:

javafx.fxml.LoadException: javafx.fxml.LoadException: Base location is undefined. 
at javafx.fxml.FXMLLoader$ScriptElement.processStartElement(FXMLLoader.java:1332) 
at javafx.fxml.FXMLLoader.processStartElement(FXMLLoader.java:2314) 
at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2131) 
at org.hive.browser.BrowserController$2.run(BrowserController.java:65) 
Caused by: javafx.fxml.LoadException: Base location is undefined. 
at javafx.fxml.FXMLLoader$ScriptElement.processStartElement(FXMLLoader.java:1314) 
... 3 more 
Exception in runnable 
java.lang.NullPointerException: Children: child node is null: parent = Pane[id=contentPane] 
at javafx.scene.Parent$1.onProposedChange(Parent.java:316) 
at com.sun.javafx.collections.VetoableObservableList.add(VetoableObservableList.java:165) 
at com.sun.javafx.collections.ObservableListWrapper.add(ObservableListWrapper.java:144) 
at org.hive.browser.BrowserController$2$1.run(BrowserController.java:80) 
at com.sun.javafx.application.PlatformImpl$4$1.run(PlatformImpl.java:179) 
at com.sun.javafx.application.PlatformImpl$4$1.run(PlatformImpl.java:176) 
at java.security.AccessController.doPrivileged(Native Method) 
at com.sun.javafx.application.PlatformImpl$4.run(PlatformImpl.java:176) 
at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:76) 

什麼問題用我的代碼?

回答

0

錯誤消息是「基地位置未定義」。我建議在url之前加一個「@」,並把javascript放在相對於你的代碼的某個路徑中,例如@ scripts/main_script.js,其中腳本是Java代碼所在的目錄。