我試圖用JavaFX Scene Builder打開我們項目的fxml文件,但出現錯誤。打開一個FXML文件
下面是一個例子文件:
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.collections.FXCollections ?>
<?import javafx.constants.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<?import java.net.URL?>
<ScrollPane xmlns:fx="http://javafx.com/fxml"
fx:controller="javafx.controller.main.kerNMainController"
fitToWidth="true"
fitToHeight="true">
<GridPane styleClass="root"
alignment="CENTER_LEFT"
hgap="10"
vgap="20">
<VBox alignment="CENTER">
<Label text="%kerN.main.welcome.label.text"
GridPane.columnIndex="0"
GridPane.rowIndex="1"
GridPane.halignment="CENTER"
fx:id="welcomeLabel"/>
<Label fx:id="versionLabel" text="%kerN.main.version.label.text" styleClass="outerLabel"/>
</VBox>
<VBox alignment="BASELINE_CENTER"
spacing="40"
GridPane.columnIndex="0"
GridPane.rowIndex="2"
minHeight="550"
minWidth="550">
<Button fx:id="assignedTestsAvailableButton"
text="%kerN.main.assigned.tests.available.btn.text"
onAction="#handleAssignedTestsAvailable"
styleClass="assignedTestsButton">
<minWidth>
<Constants fx:constant="LARGE_BUTTON_WIDTH"/>
</minWidth>
<minHeight>
<Constants fx:constant="DOUBLE_BUTTON_HEIGHT"/>
</minHeight>
</Button>
<Button fx:id="configurationButton"
text="%kerN.main.configuration.btn.text"
styleClass="configurationButton"
onAction="#handleConfiguration">
<minWidth>
<Constants fx:constant="LARGE_BUTTON_WIDTH"/>
</minWidth>
<minHeight>
<Constants fx:constant="DOUBLE_BUTTON_HEIGHT"/>
</minHeight>
</Button>
<Button fx:id="maintenanceButton"
text="%kerN.main.maintenance.btn.text"
styleClass="maintenanceButton"
onAction="#handleMaintenance">
<minWidth>
<Constants fx:constant="LARGE_BUTTON_WIDTH"/>
</minWidth>
<minHeight>
<Constants fx:constant="DOUBLE_BUTTON_HEIGHT"/>
</minHeight>
</Button>
<Button fx:id="editTestDataButton"
text="%kerN.main.edit.test.data.button.text"
onAction="#handleEditTestData"
styleClass="editTestDataButton">
<minWidth>
<Constants fx:constant="LARGE_BUTTON_WIDTH"/>
</minWidth>
<minHeight>
<Constants fx:constant="DOUBLE_BUTTON_HEIGHT"/>
</minHeight>
</Button>
<Button fx:id="testProcessButton"
text="%test.process.button.text"
onAction="#handleTestProcess"
styleClass="testProcessButton">
<minWidth>
<Constants fx:constant="LARGE_BUTTON_WIDTH"/>
</minWidth>
<minHeight>
<Constants fx:constant="DOUBLE_BUTTON_HEIGHT"/>
</minHeight>
</Button>
</VBox>
</GridPane>
<stylesheets>
<URL value="@../../style/general/Buttons.css"/>
<URL value="@../../style/main/kerNMain.css"/>
</stylesheets>
</ScrollPane>
從場景生成器獲取此錯誤Im爲
java.io.IOException: javafx.fxml.LoadException: Invalid attribute.
/C:/Users/User/workspace/kerN/src/javafx/frame/main/kerNMain.fxml:37
at com.oracle.javafx.scenebuilder.kit.fxom.FXOMLoader.load(FXOMLoader.java:92)
at com.oracle.javafx.scenebuilder.kit.fxom.FXOMDocument.<init>(FXOMDocument.java:80)
at com.oracle.javafx.scenebuilder.kit.fxom.FXOMDocument.<init>(FXOMDocument.java:95)
at com.oracle.javafx.scenebuilder.kit.editor.EditorController.updateFxomDocument(EditorController.java:2370)
at com.oracle.javafx.scenebuilder.kit.editor.EditorController.setFxmlTextAndLocation(EditorController.java:655)
at com.oracle.javafx.scenebuilder.app.DocumentWindowController.loadFromFile(DocumentWindowController.java:386)
at com.oracle.javafx.scenebuilder.app.SceneBuilderApp.performOpenFiles(SceneBuilderApp.java:579)
at com.oracle.javafx.scenebuilder.app.SceneBuilderApp.handleOpenFilesAction(SceneBuilderApp.java:447)
at com.oracle.javafx.scenebuilder.app.SceneBuilderApp.handleLaunch(SceneBuilderApp.java:427)
at com.oracle.javafx.scenebuilder.app.AppPlatform.requestStartGeneric(AppPlatform.java:139)
at com.oracle.javafx.scenebuilder.app.AppPlatform.requestStart(AppPlatform.java:106)
at com.oracle.javafx.scenebuilder.app.SceneBuilderApp.start(SceneBuilderApp.java:371)
at com.sun.javafx.application.LauncherImpl$8.run(LauncherImpl.java:837)
at com.sun.javafx.application.PlatformImpl$7.run(PlatformImpl.java:335)
at com.sun.javafx.application.PlatformImpl$6$1.run(PlatformImpl.java:301)
at com.sun.javafx.application.PlatformImpl$6$1.run(PlatformImpl.java:298)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.javafx.application.PlatformImpl$6.run(PlatformImpl.java:298)
at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)
at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at com.sun.glass.ui.win.WinApplication.access$300(WinApplication.java:39)
at com.sun.glass.ui.win.WinApplication$4$1.run(WinApplication.java:112)
at java.lang.Thread.run(Thread.java:744)
Caused by: javafx.fxml.LoadException: Invalid attribute.
/C:/Users/User/workspace/kerN/src/javafx/frame/main/kerNMain.fxml:37
at javafx.fxml.FXMLLoader.constructLoadException(FXMLLoader.java:2613)
at javafx.fxml.FXMLLoader.access$100(FXMLLoader.java:104)
at javafx.fxml.FXMLLoader$ValueElement.processAttribute(FXMLLoader.java:943)
at javafx.fxml.FXMLLoader$Element.processStartElement(FXMLLoader.java:216)
at javafx.fxml.FXMLLoader$ValueElement.processStartElement(FXMLLoader.java:738)
at javafx.fxml.FXMLLoader.processStartElement(FXMLLoader.java:2723)
at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2527)
at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2425)
at com.oracle.javafx.scenebuilder.kit.fxom.FXOMLoader.load(FXOMLoader.java:89)
... 22 more
的FXML文件手動和theywork創建應用程序,但不能在打開場景生成器,其中沒有一個......是否有這種或另一種fxml構建器的解決方案?
線:37 <Constants fx:constant="LARGE_BUTTON_WIDTH"/>
你能確認這是你的kerNMail.fxml的37行?我不認爲有一個名爲'javafx.constants'的包,可能是問題。 – 2014-11-05 15:07:43
@James_D對不起,我更新了第37行的問題: ' ' –
Anarkie
2014-11-05 15:15:17
該行引用一個名爲'Constants'的類。在你導入的任何包中都沒有這樣的類(並且根本沒有'javafx.constants'包)。我想這就是爲什麼你會收到錯誤。如果你定義了一個'Constants'類,你需要爲它提供正確的導入。 – 2014-11-05 16:12:47