Как настроить javafx с помощью Springboot с более чем одним окном?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как настроить javafx с помощью Springboot с более чем одним окном?

Сообщение Anonymous »

У меня проблема.
Это мое основное:
@SpringBootApplication
public class MyAppSpringApplication extends Application {

public static ConfigurableApplicationContext springContext;
private FXMLLoader fxmlLoader;

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

@Override
public void start(Stage stage) throws Exception {
fxmlLoader.setLocation(getClass().getResource("/sample.fxml"));
Parent root = fxmlLoader.load();
stage.setTitle("Sample app");
Scene scene = new Scene(root);
stage.setScene(scene);
stage.show();
}

@Override
public void stop() throws Exception {
springContext.stop();
}

@Override
public void init() throws Exception {
springContext = SpringApplication.run(MyAppSpringApplication.class);
fxmlLoader = new FXMLLoader();
fxmlLoader.setControllerFactory(springContext::getBean);
}
}

И мое первое окно (sample.fxml) с samplecontroller и sampleservice работает нормально. Но я создаю еще один disk-builder.fxml с их контроллером и сервисом, но когда я пытаюсь использовать там свой сервис, он не работает из-за нуля в сервисе diskbuilderservice (также не работает sampleservice в этом новом контроллере). Я слышал, что мне тоже стоит это использовать:
public static ConfigurableApplicationContext springContext;

но я понятия не имею, как мне его использовать. Извините за мои слабые знания английского языка.
@Controller
public class DishBuilderController implements Initializable {

@Autowired
DishBuilderService dishBuilderService;

@Autowired
SampleService sampleService;

private void somefun(){
sampleService.somefunInService(); //here sampleService and
every other service has null.

}

Вот момент, когда я открываю новое окно PlateBuilder (оно находится в SampleController):
@FXML
void addNoweOknoClicked(ActionEvent event) {
try {
Stage stage = (Stage)anchorPane.getScene().getWindow();
FXMLLoader fxmlLoader = new FXMLLoader();
fxmlLoader.setLocation(getClass().getResource("/dish-builder.fxml"));
AnchorPane root = fxmlLoader.load();
stage.setTitle("Sample app");
Scene scene = new Scene(root);
stage.setScene(scene);
stage.show();
}catch (IOException e){
e.printStackTrace();
}
}


Подробнее здесь: https://stackoverflow.com/questions/725 ... n-1-window
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»