2015-12-18 96 views
0

我需要使用MVC填充具有值的JAVAFX組合框,但不知何故,我不能讓組合框工作。請幫我,,使用JAVA FX填充組合框MVC

LoginController.java

package weltes.finance.controller; 

import javafx.fxml.FXML; 
import javafx.scene.control.ComboBox; 

/** 
* Created by engineering09 on 12/18/2015. 
*/ 
public class LoginController { 

    @FXML private ComboBox userComboBox; 

    @FXML private void fillComboBox(){ 
     userComboBox.getItems().addAll("Item1", "Item2"); 
    } 
} 

loginscreen.fxml

<?xml version="1.0" encoding="UTF-8"?> 

<?import javafx.scene.control.*?> 
<?import java.lang.*?> 
<?import javafx.scene.layout.*?> 
<?import javafx.geometry.Insets?> 
<?import javafx.scene.layout.GridPane?> 
<?import javafx.scene.control.Button?> 
<?import javafx.scene.control.Label?> 

<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="163.0" prefWidth="357.0" xmlns="http://javafx.com/javafx/8.0.40" xmlns:fx="http://javafx.com/fxml/1" fx:controller="weltes.finance.controller.LoginController"> 
    <children> 
     <ComboBox fx:id="userComboBox" layoutX="15.0" layoutY="14.0" prefHeight="25.0" prefWidth="328.0" promptText="Select Registered User" /> 
     <PasswordField layoutX="15.0" layoutY="56.0" prefHeight="25.0" prefWidth="328.0" promptText="Enter Password" /> 
     <Button layoutX="15.0" layoutY="97.0" mnemonicParsing="false" prefHeight="51.0" prefWidth="328.0" text="Button" /> 
    </children> 
</AnchorPane> 
+0

看來你的方法'fillComboBox()'永遠不會被調用。而且,你的控制器應該實現'Initializable',這樣你就可以在'initialize'方法中以編程方式填充你的ComboBox。 – Kwoinkwoin

回答

1

首先列表中FXML的項目。

<ComboBox fx:id="userComboBox" editable="false" layoutX="14.0" layoutY="22.0" onAction="#setTimeMultiplier"> 
    <items> 
    <FXCollections fx:factory="observableArrayList"> 
     <String fx:value="Item 1" /> 
     <String fx:value="Item 2" /> 
     <String fx:value="Item 3" /> 
    </FXCollections> 
    </items> 
</ComboBox> 

然後添加或刪除ObservableArrayList中的項目。

userComboBox.getItems().removeAll(comboTime.getItems()); 
userComboBox.getItems().addAll(...);