Пока я пытался загрузить две разные сцены, он не открывает изображение FXML, в основном я хочу сначала открыть изображение FXML, а затем приветственный экран. Некоторые, как изображение сцены не отображается.Изображение FXML не открывается в JavaFX
Main.java
public class Main extends Application {
@Override
public void start(Stage stage) throws Exception {
System.out.println("im in main");
Parent root = FXMLLoader.load(getClass().getResource("ImageScreen.fxml"));
Scene scene = new Scene(root);
stage.setScene(scene);
stage.setTitle("test");
stage.show();
}
public static void main(String[] args) {
launch(args);
}
}
ImageScreen.fxml
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.image.Image?>
<?import javafx.scene.image.ImageView?>
<?import javafx.scene.layout.Pane?>
<?import javafx.scene.layout.StackPane?>
<StackPane fx:id="imagepane" maxHeight="-Infinity" maxWidth="-Infinity"
minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0"
prefWidth="600.0" xmlns="http://javafx.com/javafx/8.0.102" xmlns:fx="http://javafx.com/fxml/1"
fx:controller="application.ImageScreenController">
<children>
<ImageView fitHeight="438.0" fitWidth="603.0" pickOnBounds="true"
preserveRatio="true">
<image>
<Image url="@bamboo-fountain-and-zen-stone.jpg" />
</image>
</ImageView>
<Pane prefHeight="200.0" prefWidth="200.0" />
</children>
ImageScreenController
public class ImageScreenController implements Initializable {
@FXML
private StackPane imagepane;
public static AnchorPane welcomepane;
@Override
public void initialize(URL url, ResourceBundle rb) {
AnchorPane pane;
try {
System.out.println("im in controller");
pane = FXMLLoader.load(getClass().getResource("WelcomeFXMLDoc.fxml"));
imagepane.getChildren().setAll(pane);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
WelcomeFXMLDoc.fxml
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.text.Font?>
<?import javafx.scene.text.Text?>
<AnchorPane fx:id="welcomepane" maxHeight="-Infinity"
maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity"
prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8.0.102"
xmlns:fx="http://javafx.com/fxml/1" fx:controller="application.WelcomeFXMLController">
<children>
<Text layoutX="212.0" layoutY="100.0" strokeType="OUTSIDE"
strokeWidth="0.0" text="Welcome" wrappingWidth="176.13671875">
<font>
<Font size="35.0" />
</font>
</Text>
</children>
WelcomeFXMLController.java
public class WelcomeFXMLController implements Initializable {
/**
* Initializes the controller class.
*
*/
@FXML
private AnchorPane welcomepane;
@Override
public void initialize(URL url, ResourceBundle rb) {
// TODO
}
}
Если я следовать этому подходу, приветствуется сцена будет перезаписывать поверх сцены изображения, которые я не хочу, я хочу, когда сцена изображение загружается полностью, изображение сцена должна уйти и должна загружать только приветственную сцену, также если я добавлю какую-либо кнопку на сцену изображения, и если я нажму на нее, она откроет приветственную сцену, но я не хочу нажимать кнопку на сцену изображения. – user2459816
У вас есть длительный процесс при загрузке сцены изображения? Потому что в предоставленном коде ваш экран изображения будет отображаться сразу, поэтому нет смысла его показывать. – MBec
Я хочу загрузить изображение сначала, подождите 10 секунд, а затем загрузите приветственную сцену. Ожидающий код не указан выше .. если бы вы могли это сделать полностью – user2459816