I. Introduction








télécharger 275.91 Kb.
titreI. Introduction
page9/15
date de publication02.02.2018
taille275.91 Kb.
typeDocumentos
ar.21-bal.com > loi > Documentos
1   ...   5   6   7   8   9   10   11   12   ...   15

D.La méthode initialize()


Si vous faites que votre contrôleur hérite de l’interface javafx.fxml.Initializable, il est désormais possible d’étendre la méthode initialize() dans le corps de votre classe. Cette méthode prend en paramètre une URL qui est l’emplacement du fichier FXML source qui a été chargé, de même que le ResourceBundle qui est utilisé pour récupérer les textes internationalisés. La méthode initialize() est appelée après que contenu du FXML ait été injecté dans le contrôleur ; donc, sauf erreur de votre part, tous les références vers vos nœuds et contrôles identifiés auront été correctement initialisées.

Titre

java Oui Line de début Dissimulable Lien fichier

package test;

import java.net.URL;

import java.util.ResourceBundle;

import javafx.fxml.FXML;

import javafx.fxml.Initializable;

import javafx.scene.control.Button;

import javafx.scene.layout.AnchorPane;

import javafx.scene.web.WebView;

public class TestController implements Initializable {

@FXML

private Button goToWebButton;

@FXML

private WebView browser;

@FXML

private AnchorPane proxyConfiguration;

@Override

public void initialize(URL url, ResourceBundle rb) {

// Tapez votre code ici.

}

}

Vous pouvez utiliser cette méthode pour vérifier que vos références ont toutes été correctement chargées (par exemple, via des tests assert), mettre des valeurs par défaut dans vos contrôles, faire du binding ou encore installer les écouteurs de base avant que le contrôle ne soit attaché au reste de votre UI et ne puisse être manipuler par la classe appelante. Conserver une référence sur le ResourceBundle permet également de continuer à utiliser des ressources internationalisée lorsqu’on change le texte dans l’interface ultérieurement.

E.Accéder au sous-contrôleur


Chouette, nous pouvons définir des contrôleurs pour chacun de nos FXML ! Cependant ce n’est pas très pratique dans le cas de FXML inclus dans d’autres FXML puisque nous ne contrôlons pas le chargement et donc que nous ne pouvons pas récupérer de références sur le sous-contrôleur.

Reprenons notre exemple d’inclusion de FXML dans un autre FXML. Tout ce que nous avons à faire c’est de modifier la description de la balise racine pour pointer sur une class contrôleur. C’est exactement ce que nous avons fait à la section précédente :

Titre

xml Oui Line de début Dissimulable Lien fichier



Et inclure la classe test.ProxyController dans notre projet. Encore une fois, pareil que précédemment. Je vais juste rajouter un peu de code dans la méthode initialize() de manière à ce que notre UI commence un peu à se comporter normalement : faire que les contrôles et champs soient désactivés quand on est pas sensé pouvoir les utiliser.

Titre

java Oui Line de début Oui Lien fichier

package test;

import java.net.URL;

import java.util.ResourceBundle;

import javafx.fxml.FXML;

import javafx.fxml.Initializable;

import javafx.scene.control.CheckBox;

import javafx.scene.control.PasswordField;

import javafx.scene.control.RadioButton;

import javafx.scene.control.TextField;

public class ProxyController implements Initializable {

@FXML

private RadioButton noProxyRadio;

@FXML

private RadioButton systemProxyRadio;

@FXML

private RadioButton manualProxyRadio;

@FXML

private TextField hostField;

@FXML

private TextField portField;

@FXML

private CheckBox authenticationCheck;

@FXML

private TextField userField;

@FXML

private PasswordField passwordField;

@Override

public void initialize(URL url, ResourceBundle rb) {

hostField.editableProperty().bind(manualProxyRadio.selectedProperty());

portField.editableProperty().bind(manualProxyRadio.selectedProperty());

authenticationCheck.disableProperty().bind(manualProxyRadio.selectedProperty().not());

userField.editableProperty().bind(manualProxyRadio.selectedProperty().and(authenticationCheck.selectedProperty()));

passwordField.editableProperty().bind(manualProxyRadio.selectedProperty().and(authenticationCheck.selectedProperty()));

}

}

Souvenez-vous, dans notre FXML principal, nous avions assigné l’identité proxyConfiguration au FXML secondaire proxy.fxml que nous avons inclus :

Titre

xml Oui Line de début Dissimulable Lien fichier



En fait, nous avons déjà implicitement accès au contrôleur de proxy.fxml depuis le contrôleur de notre FXML principal. Pour rendre cet accès explicite, il suffit pour cela de déclarer :

Titre

java Oui Line de début Dissimulable Lien fichier

@FXML

private AnchorPane proxyConfiguration;

@FXML

private ProxyController proxyConfigurationController;

La convention est simple :

@FXML

private Controller ;

Et c’est tout ! Nous pouvons désormais accéder au sous-contrôleur et manipuler ses méthodes et propriétés exactement comme avec n’importe quel autre objet Java.
1   ...   5   6   7   8   9   10   11   12   ...   15

similaire:

I. Introduction iconIntroduction générale Introduction aux ordinateurs

I. Introduction iconTD/tp 1 Introduction au sdk d’Android 1 Introduction
«*. univ-lr fr» pour éviter d’utiliser le proxy pour les adresses internes à l’ulr

I. Introduction icon1. Clique d’abord sur «Visite virtuelle Haussman» et regarde l’introduction...
«Visite virtuelle Haussman» et regarde l’introduction à la belle architecture du bâtiment

I. Introduction iconI introduction

I. Introduction iconI introduction

I. Introduction iconI. Introduction

I. Introduction iconI introduction

I. Introduction iconA. Introduction

I. Introduction iconI introduction

I. Introduction iconI. introduction








Tous droits réservés. Copyright © 2016
contacts
ar.21-bal.com