我正试图从一个窗口切换到另一个窗口。
这是我的代码:
public class SelectTypeController implements Initializable {
@FXML
private Button buttonVai;
@FXML
private ComboBox<String> comboBox;
@FXML
private AnchorPane rootPane;
@Override
public void initialize(URL location, ResourceBundle resources) {
ObservableList<String> observableListOfAccomodations = FXCollections.observableArrayList("1", "2", "3");
comboBox.setItems(observableListOfAccomodations);
buttonVai.setDisable(true);
}
@FXML
public void comboChanged() {
buttonVai.setDisable(false);
}
@FXML
public void showCrudPage() {
switch (comboBox.getValue()) {
case "3":
showCrudPageRestaurantScene();
break;
}
}
// this is giving problem
public void showCrudPageRestaurantScene() {
try {
Parent parent = FXMLLoader.load(SelectTypeController.class.getResource("/crud_restaurant.fxml"));
Stage stage = new Stage();
Scene scene = new Scene(parent);
stage.setScene(scene);
stage.show();
} catch (IOException e) {
e.printStackTrace();
}
}
}
管理以下fxml视图select_type.fxml
<AnchorPane
fx:id="rootPane"
xmlns:fx="http://javafx.com/fxml/1" fx:controller="controllers.SelectTypeController" maxHeight="-Infinity"
maxWidth="-Infinity"
minHeight="-Infinity" minWidth="-Infinity" prefHeight="800.0" prefWidth="1280.0"
xmlns="http://javafx.com/javafx/11.0.1">
<ImageView fitHeight="800.0" fitWidth="1280.0" pickOnBounds="true">
<Image url="images/3156482.jpg"/>
</ImageView>
<Pane layoutX="440.0" layoutY="307.0" opacity="0.8" prefHeight="200.0" prefWidth="400.0"
style="-fx-background-color: #06BCAD; -fx-background-radius: 20;"/>
<Pane layoutX="336.0" layoutY="206.0" prefHeight="336.0" prefWidth="608.0">
<Label layoutX="200.0" layoutY="29.0" text="Seleziona una tipologia">
<font>
<Font size="20.0"/>
</font>
</Label>
<Button fx:id="buttonVai" layoutX="260.0" layoutY="250.0" mnemonicParsing="false"
onMouseClicked="#showCrudPage"
style="-fx-background-color: #0078D7;" text="Vai" textFill="white"/>
</Pane>
<ComboBox fx:id="comboBox" layoutX="512.0" layoutY="371.0" prefHeight="30.0" prefWidth="292.0"
promptText="Seleziona una tipologia"
onAction="#comboChanged"/>
</AnchorPane>
我想点击Vai
按钮,我会被重定向到:
public class CrudRestaurant {
@FXML
private Label labelDescription;
}
管理
crud_restaurant.fxml
<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="1080.0"
fx:controller="controllers.CrudRestaurant"
prefWidth="1920.0" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1">
<Label layoutX="828.0" layoutY="415.0" text="Placeholder"/>
</AnchorPane>
不幸的是,我遇到了一个例外:
javax.xml.stream.XMLStreamException:[行,列]处的ParseError:[3,6]
,特别是:
javafx.fxml.LoadException:
/home/john/Desktop/myProject/build/resources/main/crud_restaurant.fxml
at javafx.fxml/javafx.fxml.FXMLLoader.constructLoadException(FXMLLoader.java:2625)
at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2568)
at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2466)
at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3237)
at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3194)
at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3163)
at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3136)
at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3113)
at javafx.fxml/javafx.fxml.FXMLLoader.load(FXMLLoader.java:3106)
at controllers.SelectTypeController.showCrudPageRestaurantScene(SelectTypeController.java:60)
at controllers.SelectTypeController.showCrudPage(SelectTypeController.java:47)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at com.sun.javafx.reflect.Trampoline.invoke(MethodUtil.java:76)
at jdk.internal.reflect.GeneratedMethodAccessor2.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at javafx.base/com.sun.javafx.reflect.MethodUtil.invoke(MethodUtil.java:273)
at javafx.fxml/com.sun.javafx.fxml.MethodHelper.invoke(MethodHelper.java:83)
at javafx.fxml/javafx.fxml.FXMLLoader$MethodHandler.invoke(FXMLLoader.java:1784)
at javafx.fxml/javafx.fxml.FXMLLoader$ControllerMethodEventHandler.handle(FXMLLoader.java:1670)
at javafx.base/com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86)
at javafx.base/com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)
at javafx.base/com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
at javafx.base/com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59)
at javafx.base/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
at javafx.base/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at javafx.base/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at javafx.base/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at javafx.base/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at javafx.base/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at javafx.base/com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
at javafx.base/com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:54)
at javafx.base/javafx.event.Event.fireEvent(Event.java:198)
at javafx.graphics/javafx.scene.Scene$ClickGenerator.postProcess(Scene.java:3564)
at javafx.graphics/javafx.scene.Scene$ClickGenerator.access$8200(Scene.java:3492)
at javafx.graphics/javafx.scene.Scene$MouseHandler.process(Scene.java:3860)
at javafx.graphics/javafx.scene.Scene$MouseHandler.access$1200(Scene.java:3579)
at javafx.graphics/javafx.scene.Scene.processMouseEvent(Scene.java:1849)
at javafx.graphics/javafx.scene.Scene$ScenePeerListener.mouseEvent(Scene.java:2588)
at javafx.graphics/com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:397)
at javafx.graphics/com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:295)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at javafx.graphics/com.sun.javafx.tk.quantum.GlassViewEventHandler.lambda$handleMouseEvent$2(GlassViewEventHandler.java:434)
at javafx.graphics/com.sun.javafx.tk.quantum.QuantumToolkit.runWithoutRenderLock(QuantumToolkit.java:390)
at javafx.graphics/com.sun.javafx.tk.quantum.GlassViewEventHandler.handleMouseEvent(GlassViewEventHandler.java:433)
at javafx.graphics/com.sun.glass.ui.View.handleMouseEvent(View.java:556)
at javafx.graphics/com.sun.glass.ui.View.notifyMouse(View.java:942)
at javafx.graphics/com.sun.glass.ui.gtk.GtkApplication._runLoop(Native Method)
at javafx.graphics/com.sun.glass.ui.gtk.GtkApplication.lambda$runLoop$11(GtkApplication.java:277)
at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: javax.xml.stream.XMLStreamException: ParseError at [row,col]:[3,6]
Message: The processing instruction target matching "[xX][mM][lL]" is not allowed.
at java.xml/com.sun.org.apache.xerces.internal.impl.XMLStreamReaderImpl.next(XMLStreamReaderImpl.java:652)
at java.xml/javax.xml.stream.util.StreamReaderDelegate.next(StreamReaderDelegate.java:84)
at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2538)
... 51 more
- 如何修复?javaf
已解决
我在crud_restaurant.fxml
文件中复制了<?xml version="1.0" encoding="UTF-8"?>
。我的错。
只需删除一个多余的声明。