2012-03-14 16 views
6

Ho un'applicazione JavaFX che utilizza FXML per creare la sua GUI.Prefill ListView in un'applicazione con FXML

Quando si avvia questa applicazione, ho bisogno di avere ListView, che ha alcuni valori caricati, ad esempio, dal database. Quindi, come posso fare questo?

So come creare un'applicazione, che carica elementi in ListView dopo che l'utente fa clic su un pulsante o qualcosa di simile (attributo "onAction" in FXML). Ma questo non mi soddisfa perché ho bisogno di elementi da caricare automaticamente su ListView.

risposta

8

Se avete fxml con il regolatore, come prossimo:

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

si può semplicemente implementare Initializable nel controller:

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

Questo riempie il mio choicebox con cinque velocità di trasmissione predeterminati. Presumo che se si tenta di aggiungere elementi dal controller, l'elenco mostra solo quei valori (non testati).

<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> 

È inoltre necessario includere la seguente dichiarazione di importazione nel vostro FXML:

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

Works, ma non dimenticare di aggiungere istruzioni di importazione necessari alla parte superiore del file FXML; come '' –

+0

Come si può fornire una fabbrica personalizzata? – crush