0
Что я хочу сделать, это изменить размер сцены (окна приложения), чтобы изменить размер содержимого внутри окна. Я разместил свой код, который я сделал до сих порДоступ к методу контроллера fxml из загрузчика fxml
Загрузчик класса
public class ResizingButtons extends Application {
@Override
public void start(Stage stage) throws Exception {
Parent root = FXMLLoader.load(getClass().getResource("FXMLDocument.fxml"));
Scene scene = new Scene(root);
stage.setScene(scene);
stage.show();
scene.widthProperty().addListener(new ChangeListener<Number>() {
@Override
public void changed(ObservableValue<? extends Number> observable, Number oldValue, Number newValue) {
try{
System.out.println("Scene Width Property is " + scene.getWidth());
}
catch(Exception e){
System.out.println("Error in width listener of scene" +e.getMessage());
}
}
});
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
launch(args);
}
}
И это контроллер FXMLDocument.fxml FXML класса
public class FXMLDocumentController implements Initializable {
@FXML
public Button btn1;
@Override
public void initialize(URL url, ResourceBundle rb) {
// TODO
}
public void changeBtnSize(){
btn1.setPrefHeight(200);
btn1.setStyle("-fx-background-color:red");
}
}
Когда размер окна , я хочу получить доступ к методу changeBtnSize() класса контроллера.
Теперь я перед проблемой всякий раз, когда я пытаюсь сделать изменения в компонентах FXML, из ChangeListener() метод класса загрузчика, он дает нулевой 'code' scene.widthProperty () .addListener (новый ChangeListener() { @Override общественного недействительными изменилась (ObservableValue расширяет число> наблюдаемым, номер OldValue, номер новое_значение) { попробовать { controller.resizeComponents();} улов (Исключение e) { System.out.println (e.getMessage()); } } }); 'code' –
viper
@viper Пожалуйста, предоставьте подробную информацию о полученной ошибке – SimY4
, когда я попытался вызвать метод контроллера, из прослушивателя изменений класса loader, он выполняет инструкции печати, но дает значение null, если я попытался внести какие-либо изменения в компоненты FXML scene.widthProperty(). добавления слушатель (новый ChangeListener() { @Override общественный недействительными изменились (ObservableValue расширяет Number> наблюдаемый номер OldValue, номер новое_значение) { Try { controller.resizeComponents (); // контроллер - это объект fxmlcontroller } // код в контроллере public void resizeComponents() { System.out.println ("hi"); acPane.setMinSize (300, 400); } –
viper