2013-08-15 14 views
9

Ho il seguente FXML:JavaFX e FXML: come faccio a impostare l'elemento selezionato predefinito in un ChoiceBox in FXML?

<ChoiceBox> 
    <items> 
     <FXCollections fx:factory="observableArrayList"> 
      <String fx:value="2 minutes" /> 
      <String fx:value="5 minutes" /> 
      <String fx:value="15 minutes" /> 
     </FXCollections> 
    </items> 
</ChoiceBox> 

Ma nella GUI mostra solo un ChoiceBox il valore predefinito è nulla. Vorrei che il primo elemento nell'elenco fosse l'impostazione predefinita e che una scelta di "null" o nulla fosse proibita.

Come posso realizzare questo?

risposta

11

Ho aggiunto l'attributo value al tag ChoiceBox e ha funzionato.

<ChoiceBox value="2 minutes"> 
    <items> 
     <FXCollections fx:factory="observableArrayList"> 
      <String fx:value="2 minutes" /> 
      <String fx:value="5 minutes" /> 
      <String fx:value="15 minutes" /> 
     </FXCollections> 
    </items> 
</ChoiceBox> 
+0

nel nome di evitare valori stringa hardcoded, esiste un modo per fare riferimento a un campo o un metodo sul controller per ottenere questo valore? Non posso usare fx: costante perché cercherebbe solo i campi della classe String, e non posso (davvero) usare la sintassi del binding perché lascerebbe la proprietà legata. – Groostav

0

In primo luogo, si dovrebbe importare il modello di valore necessario, come Crowell risposta, si dovrebbe importare come questo nel tuo intestazione fxml:

<?import javafx.collections.*?> 

In secondo luogo, se si desidera di importare il proprio modello, importarlo prima e poi così:

<?import com.zzg.mybatis.generator.model.*?> 
.... 

<ChoiceBox layoutX="24.0" layoutY="14.0" prefWidth="150.0"> 
     <items> 
      <FXCollections fx:factory="observableArrayList"> 
        <DatabaseDTO name="MySQL" value="1"></DatabaseDTO> 
        <DatabaseDTO name="Oracle" value="2"></DatabaseDTO> 
      </FXCollections> 
     </items> 
</ChoiceBox> 
+0

Questo non risponde affatto alla domanda! La domanda era come impostare un valore predefinito e non come importare e includere modelli personalizzati di qualsiasi tipo. – geisterfurz007

Problemi correlati