JavaFX2 FXML comment ajouter des éléments (Boutons, par exemple) de manière dynamique
Donc, ce que je veux faire, c'est que la création d'un élément personnalisé en utilisant fxml, puis ajouter un couple d'instances de cet élément dans un conteneur, comme GridPane. Les "nouveaux" opérateurs ne fonctionne pas pour moi, parce que je tiens à utiliser le @fxml annotateur pour accéder à l'élément. Le clonage pourrait être sympa, mais il ne fonctionne pas. Le FXMLLoader est très lent, lors de l'utilisation dans un for() contruct d'ajouter de nombreux éléments.
Il serait parfait, si je pouvais écrire une référence dans le fxml parentnode, qui pourrait être appelée à partir du contrôleur.
Désolé... ici en pseudo...
public class Controller implements Initializable {
@FXML
private VBox stack;
@FXML
private Button button;
@FXML
private void Change(KeyEvent event) throws IOException {
for (int i=0; i<10; i++){
stack.getChildren().add(button);
}
}
}
C'est pas un problème pour ajouter LE bouton de la VBox. Mais dans un contruct (pour ajouter PLUS d'UN Bouton), il échoue. Je pourrais utiliser le nouvel opérateur dans la boucle for, mais je veux savoir, si c'est la seule possibilité. Je pensais qu'il devait y avoir une autre façon par exemple à utiliser le @FXML annotateur pour "obtenir" le bouton, puis de la dupliquer.
OriginalL'auteur user1562969 | 2012-07-30
Vous devez vous connecter pour publier un commentaire.
Je crois qu'il échoue parce que vous essayez d'ajouter le même bouton. Dans la boucle for, vous devez créer une instance d'un bouton à chaque fois le code de la boucle est exécuté.
Quelque chose comme:
Laissez-moi savoir si j'ai mal compris.
L'homme, lorsque vous utilisez le @FXML Bouton de bouton de ligne vous êtes déjà en ajoutant le bouton de FXML. Votre code fonctionne réellement la façon dont vous vous attendez, mais puisque vous êtes à l'aide d'un StackPane il continue de mettre le bouton à plusieurs reprises (dix fois), au-dessus de la même bouton. Je crois que ce que vous essayez de faire est de créer un composant personnalisé à l'aide de fxml, si c'est le cas, ouvrir un autre thread juste pour cette
Le truc, c'est que FXML bouton a déjà été ajouté. Tout ce que vous faire est d'ajouter le même bouton. Il ne sera jamais à créer un nouveau bouton. Le FXML bouton déclaration de variable se réfère à un bouton dans votre fichier FXML. La seule façon d'ajouter un nouveau bouton est en fait de créer un nouveau bouton de l'objet, puis l'ajouter à votre vbox
OriginalL'auteur Yarrgh
Si vous souhaitez accéder au bouton, il suffit de créer la variable de classe.
Dans la méthode initialize (), init le Bouton et ajouter dans le récipient.
Vous pouvez ensuite le bouton de la poignée de l'action de l'événement:
OriginalL'auteur Thinhbk