Почему я не вижу изменения в своем проекте, но вижу их в файле f xml? - PullRequest
0 голосов
/ 22 января 2020

У меня проблема с моим проектом в JavaFX. Я использую SceneBuilder, который сохраняет все изменения в файле f xml, но когда я запускаю проект, я вижу только пустой фон, даже размер рабочей области не изменяется. Я пытаюсь очистить проект и рабочее пространство, но проблема та же. У меня есть refre sh проект и все файлы и ничего, я выбираю «Refre sh, используя нативные хуки или пулы», но у меня все время есть эта проблема. У кого-нибудь есть другая идея? Я использую java 13 и JavaFX 11

mainWindow.f xml

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

<?import javafx.scene.control.Button?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.layout.Pane?>

<Pane maxHeight="-Infinity" maxWidth="-Infinity"
minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0"  prefWidth="600.0"   xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com   /fxml/1" fx:controller="application.MainWindowController">
<children>
<Label fx:id="labelText" layoutX="286.0" layoutY="42.0"   prefHeight="17.0" prefWidth="0.0" text="" />
<Button fx:id="button1" layoutX="270.0" layoutY="82.0"  mnemonicParsing="false" text="OK" />
</children>
</Pane>

main.class

package application;

import javafx.application.Application;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.layout.BorderPane;

public class Main extends Application {
    @Override
    public void start(Stage primaryStage) {
        try {
            BorderPane root = new BorderPane();
            Scene scene = new Scene(root);
             scene.getStylesheets().add(getClass()
                  .getResource("mainWindow.fxml").toExternalForm());
            primaryStage.setTitle("Test");
            primaryStage.setScene(scene);

            primaryStage.show();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        launch(args);
    }
}

Класс MainWindowController

package application;

import java.net.URL;
import java.util.ResourceBundle;

import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Button;
import javafx.scene.control.Label;

public class MainWindowController implements Initializable {

    @FXML
    Label labelText;
    @FXML
    Button button1;


    @Override
    public void initialize(URL location, ResourceBundle resources) {

        labelText.setText("Start");
    }

}

1 Ответ

0 голосов
/ 23 января 2020

Я думаю, что проблема в вашем методе запуска в основном. Попробуйте эту реализацию вместо этого.

    @Override
    public void start(Stage primaryStage) {
        try {
            Parent root = FXMLLoader.load(getClass().getResource("mainWindow.fxml"));
            primaryStage.setTitle("Test");
            primaryStage.setScene(new Scene(root, 600, 400));
            primaryStage.show();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

Это то, что вы ожидали?

...