2017-01-10 4 views
1

est-il encore possible avec JavaFX 8 de lier une propriété de contrôle directement dans FXML à une propriété du contrôleur? Quelque chose comme:JavaFX: Expression de liaison dans le document FXML

<?xml version="1.0" encoding="UTF-8"?> 
<?import java.net.*?> 
<?import javafx.geometry.*?> 
<?import javafx.scene.control.*?> 
<?import javafx.scene.layout.*?> 
<?import javafx.scene.text.*?> 

<GridPane xmlns:fx="http://javafx.com/fxml" 
    fx:controller="application.PaneController" minWidth="200"> 
    <Label id="counterLabel" text="${controller.counter}" /> 
    <Button translateX="50" text="Subtract 1" 
     onAction="#handleStartButtonAction" /> 
</GridPane> 

semble ne pas fonctionner.

Répondre

1

Oui cela est possible en supposant que vous mettre en œuvre les méthodes correctes dans le contrôleur:

public class PaneController { 

    private final IntegerProperty counter = new SimpleIntegerProperty(100); 

    public IntegerProperty counterProperty() { 
     return counter; 
    } 

    // this is also required 
    public int getCounter() { 
     return counter.get(); 
    } 

    public void handleStartButtonAction() { 
     counter.set(counter.get() - 1); 
    } 

} 

Aussi je ne suis pas sûr de placer les deux Node s dans la même cellule est la meilleure décision ...

+0

J'ai seulement implémété le getter de couterProperty mais pas le getter simple. Ok, cela fonctionne. Merci – TosKen

+0

Avec le plugin clipse e (fx) vous pouvez générer ce getter/setter/propriété par: right-clic/source/generate JavaFX Getters and Setters – pdem