Ce que je veux faire est de redimensionner la taille de la scène (la fenêtre de l'application), je veux redimensionner le contenu de la fenêtre en conséquence. J'ai posté mon code que je l'ai fait jusqu'à présentAccéder à la méthode du contrôleur fxml à partir du chargeur fxml
La classe chargeur
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);
}
}
Et ceci est le contrôleur de la classe FXMLDocument.fxml de 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");
}
}
Lorsque la taille de la fenêtre est redimensionnée, je veux accéder à la méthode changeBtnSize() de la classe du contrôleur.
Maintenant, je suis face à problème chaque fois que je tente de faire des changements dans les composants FXML, de méthode ChangeListener() de la classe du chargeur, il donne null 'scene.widthProperty recueil HSC () .addListener (nouveau ChangeListener() { @Override public void changé (ObservableValue étend Nombre> observables, numéro OLDVALUE, numéro newValue) {{ essayer controller.resizeComponents();} prises (Exception e) { System.out.println (e.getMessage()); } } }); 'code' –
viper
@viper S'il vous plaît, fournir des détails sur l'erreur reçue – SimY4
quand j'ai essayé d'appeler une méthode de contrôleur, à partir de l'écouteur de changement de classe loader, il exécute des instructions d'impression mais donne une null si j'ai essayé d'apporter des modifications dans le composants de FXML scene.widthProperty(). addListener (nouveau ChangeListener() { @Override public void changé (ObservableValue étend Nombre> observable, numéro oldValue, numéro newValue) {try { controller.resizeComponents () // le contrôleur est l'objet de fxmlcontroller } // code dans le contrôleur public void resizeComponents() { System.out.println ("hi"); acPane.setMinSize (300, 400); } –
viper