ComboBox显示空白列表

时间:2019-06-28 20:19:18

标签: java javafx

我试图在JavaFX上使用不同的对象并堆叠在组合框上。它显示没有元素的列表。

public class Controller extends Application {

public void start(Stage primaryStage) throws Exception {
    Parent root = FXMLLoader.load(getClass().getResource("sample.fxml"));
    primaryStage.setTitle("Hello World");
    primaryStage.setScene(new Scene(root, 300, 275));
    primaryStage.show();

}

public Label label1 = new Label();
public CheckBox cbox1 = new CheckBox();
public ObservableList<String> options = FXCollections.observableArrayList(
         "Option 1",
                "Option 2",
                "Option 3"
        );

public ComboBox comboBox = new ComboBox(options);
......
<ComboBox id="comboBox" fx:id="comboBox" prefWidth="150.0" 
GridPane.columnIndex="1" GridPane.rowIndex="11" />
......

1 个答案:

答案 0 :(得分:1)

您没有将/usr/lib64中的ComboBox添加到FXML中。而是要创建一个全新的Controller(不会在您的场景中显示)。

您应该删除此行:

ComboBox

并替换为:

public ComboBox comboBox = new ComboBox(options);

然后只需设置组合框的项目即可。

@FXML
private ComboBox comboBox;

为什么?comboBox.setItems(options); 注释告诉JavaFX,您在@FXML文件中定义了您在下一行中引用的ComboBox。这使JavaFX可以将该对象“注入”到您的控制器中。

  

侧面说明:通常,将主类用作控制器类不是一个好主意(我建议为FXML创建一个单独的控制器类)。您的控制器类还应该包含一个FXML方法(以private void initialize()注释)。您可以在此处设置场景控件的参数。大多数介绍性的JavaFX教程将引导您完成该过程。