2012-03-14 11 views
6

J'ai une application JavaFX utilisant FXML pour construire son interface graphique.Prefill ListView dans une application avec FXML

Lorsque cette application est lancée, j'ai besoin de ListView, qui a des valeurs chargées, par exemple, à partir de la base de données. Alors, comment puis-je faire cela?

Je sais comment faire une application, qui charge des éléments dans ListView après que l'utilisateur a cliqué sur un bouton, ou quelque chose comme ça (attribut "onAction" dans FXML). Mais cela ne me convient pas car j'ai besoin d'éléments à charger automatiquement dans ListView.

Répondre

8

Si vous avez FXML avec le contrôleur, comme suivant:

<AnchorPane xmlns:fx="http://javafx.com/fxml" fx:controller="test.Sample"> 
    <children> 
     <ListView fx:id="listView"/> 
    </children> 
</AnchorPane> 

vous pouvez simplement mettre en œuvre Initializable dans votre contrôleur:

public class Sample implements Initializable { 
    @FXML 
    private ListView listView; 

    @Override 
    public void initialize(URL url, ResourceBundle rb) { 
     // change next line to DB load 
     List<String> values = Arrays.asList("one", "two", "three"); 

     listView.setItems(FXCollections.observableList(values)); 

    } 
} 
14

Cela remplit mon choicebox les cinq vitesses de transmission prédéterminés. Je suppose que si vous essayez d'ajouter des éléments de votre contrôleur, la liste ne montre que ces valeurs (non testé).

<ChoiceBox fx:id="baudRates" layoutX="234.0" layoutY="72.0"> 
    <items> 
     <FXCollections fx:factory="observableArrayList"> 
      <String fx:value="4800" /> 
      <String fx:value="9600" /> 
      <String fx:value="19200" /> 
      <String fx:value="57600" /> 
      <String fx:value="115200" /> 
     </FXCollections> 
    </items> 
</ChoiceBox> 

Vous devez également inclure la déclaration d'importation suivante dans votre FXML:

<?import javafx.collections.*?> 
+4

Works, mais ne pas oublier d'ajouter les déclarations d'importation nécessaires au haut de votre fichier FXML; comme '' –

+0

Comment pouvez-vous fournir une usine personnalisée? – crush

Questions connexes