2012-07-27 100 views
16

如何使用FXML在ComboBox中设置默认值?组合框FXML默认值

<ComboBox fx:id="cbo_Bacteriologie_Aesculine" prefHeight="21.0" prefWidth="105.0" GridPane.columnIndex="1" GridPane.rowIndex="0"> 
    <items> 
     <FXCollections fx:factory="observableArrayList"> 
      <String fx:value="NVT" /> 
      <String fx:value="Bezig" /> 
      <String fx:value="Positief" /> 
      <String fx:value="Negatief" /> 
     </FXCollections> 
    </items> 
</ComboBox> 

我希望NVT被默认选中。我尝试加入selected="selected"等,但似乎没有找到正确的语法。

是否可以使用Scene Builder编辑列出的项目?我似乎无法找到它。

回答

37

使用此:

<ComboBox> 
    <items> 
     <FXCollections fx:factory="observableArrayList"> 
      <String fx:value="NVT" /> 
      <String fx:value="Bezig" /> 
      <String fx:value="Positief" /> 
      <String fx:value="Negatief" /> 
     </FXCollections> 
    </items> 
    <value> 
     <String fx:value="NVT" /> 
    </value> 
</ComboBox> 
+6

''也可以工作,看起来更干净。 – T3rm1 2014-04-28 07:09:42

+0

给出'javafx.fxml.LoadException:String不是一个有效的类型.' – Bopsi 2016-01-11 09:57:02

+0

@BappadityaSasmal你需要导入String类。 '<?import java.lang.String?>' – UnKnown 2016-07-30 19:36:36

8

我不认为在FXML中可能。您需要在控制器中初始化组件,例如使用以下行cbo_Bacteriologie_Aesculine.getSelectionModel().setSelectedIndex(1);来选择元件Bezig。

但是,如果您在FXML中找到了一种方法,我很感兴趣。

编辑:它可能在FXML中。你可以在Guedolino的回答(https://stackoverflow.com/a/14436371/1344424)中看到它,这应该成为这个问题的正确答案。

+1

好吧,我用下面的代码'cbo_Bacteriologie_Aesculine.getSelectionModel()selectFirst();',它的伎俩。我希望FXML能够支持这种处理:) – Perneel 2012-07-28 16:24:48

6

我得到与第一建议的方法

setSelectedItem(T)保护了在selectionModel的 访问的奇怪的错误,其中T是一种类型的变量: Ť延伸类selectionModel的对象声明

对我来说

getSelectionModel().select("NVT"); 

工作就像一个魅力。