2012-07-27 127 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"); 

工作就像一個魅力。