Puste okno JavaFX

0

Witam,

Lepiej nie pytać od ilu dokładnie próbuje rozwiązać ten problem, ale chyba do tego nie dojde. Szukałem rozwiązania na SOF lecz nic konkretnego nie znalazłem co rozwiązałoby mój problem. Mianowicie program się uruchamia lecz jest tylko puste okienko. Zauważyłem że prawdopodobnie nie łapie fxmla.

package application;


import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Scene;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
 
public class Main extends Application {
	
	 public static void main(String[] args) {
	        launch(args);
	    }
    @Override
    public void start(Stage primaryStage)  {
    
        try{
        StackPane stackPane = new StackPane();
        FXMLLoader loader = new FXMLLoader();
        loader.setLocation(Main.class.getResource("/StackPaneWindow.fxml"));
        Scene scene = new Scene(stackPane);

        primaryStage.setTitle("Hello World!");
        primaryStage.setScene(scene);
        primaryStage.show();
    } catch (Exception e) {
    	   e.printStackTrace();
    	}
    }

}

StackPaneWindow.fxml

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

<?import javafx.scene.control.MenuButton?>
<?import javafx.scene.control.MenuItem?>
<?import javafx.scene.layout.StackPane?>


<StackPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8.0.65" xmlns:fx="http://javafx.com/fxml/1">
   <children>
      <MenuButton mnemonicParsing="false" text="MenuButton">
        <items>
          <MenuItem mnemonicParsing="false" text="Action 1" />
          <MenuItem mnemonicParsing="false" text="Action 2" />
        </items>
      </MenuButton>
   </children>
</StackPane>

Próbowałem uruchamiać program bez try lecz problem występował tu i tu. Z góry dziękuje za pomoc!

0

W ścieżce do FXMLa masz StackPaneWindow a nazwa klasy, którą napisałeś to StackPaneWindows. Literówka na forum, czy w programie też tak masz?

1
artur52 napisał(a):

W ścieżce do FXMLa masz StackPaneWindow a nazwa klasy, którą napisałeś to StackPaneWindows. Literówka na forum, czy w programie też tak masz?

Literówka na forum. W programie/plikach jest wszystko w porządku. A swoją drogą problemu nadal nie udało mi się rozwiązać

user image

Edit: Problem rozwiązany. Ale chciałbym zostawić rozwiązanie dla "potomnych" bo z doświadczenia wiem że czasem ktoś ma podobny problem.

Rozwiązanie: Musimy poprawnie wczytać plik fxml:

FXMLLoader loader = new FXMLLoader();
loader.setLocation(Main.class.getResource("/StackPaneWindow.fxml"));
Parent node = loader.load()
StackPane stackPane = new StackPane(node);

A następnie w naszym fxmlu umieścić powyższy StackPane:

FXMLLoader loader = new FXMLLoader();
loader.setLocation(Main.class.getResource("/StackPaneWindow.fxml"));
Scene scene = new Scene(loader.load); 

1 użytkowników online, w tym zalogowanych: 0, gości: 1