JavaFX & FXML: how do I set the default selected item in a ChoiceBox in FXML?

前端 未结 3 815
走了就别回头了
走了就别回头了 2021-01-04 04:17

I have the following FXML:


    
        
            

        
相关标签:
3条回答
  • 2021-01-04 04:59

    I added the value attribute to the ChoiceBox tag, and that worked.

    <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 讨论(0)
  • 2021-01-04 04:59

    @Groostav: In case we programmatically "know" the value that should appear as selected (for example, we landed in an edit form), we can do the following:

    1) Add a new item with index 0 (that is, the element we need to show as selected):

    myChoiceBox.getItems().add(0, ItemObtainedProgrammatically);
    

    2) Show the item as selected (since we already know it's at position 0):

    myChoiceBox.getSelectionModel().select(0);

    Probably this qualifies as a dirty hack, but it works. The con: You have the same item twice in your choicebox

    0 讨论(0)
  • 2021-01-04 05:11

    First, you should import your needed value model, like Crowell answer, you should import like this in your fxml header:

    <?import javafx.collections.*?>
    

    Second, if you want's import your own model, import it first and then like this:

    <?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 讨论(0)
提交回复
热议问题