JavaFX 填充一个简单的 listView

JavaFX populate a simple listView

我在这个例子中使用 Scene Builder,我有一个列表视图,我希望它在我 运行 应用程序时已经填充,但我似乎没有找到一种方法来做到这一点, 它根本不起作用,列表视图也没有出现。

这是我的FXMLTasker.fxml

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

    <?import javafx.scene.control.ListView?>
    <?import javafx.scene.control.SplitPane?>
    <?import javafx.scene.layout.AnchorPane?>

    <AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="557.0" prefWidth="1012.0" style="-fx-background-color: #0288D1;" xmlns="http://javafx.com/javafx/9.0.1" xmlns:fx="http://javafx.com/fxml/1">
       <children>
          <SplitPane dividerPositions="0.5" layoutX="-8.0" layoutY="35.0" prefHeight="529.0" prefWidth="1027.0" style="-fx-background-color: #EEEEEE;" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="28.0">
            <items>
              <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="160.0" prefWidth="100.0">
                   <children>
                      <ListView fx:id="list_todo" editable="true" layoutX="14.0" layoutY="14.0" prefHeight="508.0" prefWidth="485.0" />
                   </children></AnchorPane>
              <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="527.0" prefWidth="640.0" />
            </items>
          </SplitPane>
       </children>
    </AnchorPane>

这是我的 Main.class

import javafx.application.Application;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.ListView;
import javafx.stage.Stage;

/**
 *
 * @author samuel
 */
public class JavaFXApplication3 extends Application {

    @Override
    public void start(Stage stage) throws Exception {
        Parent root = FXMLLoader.load(getClass().getResource("FXMLTasker.fxml"));

        Scene scene = new Scene(root);

        stage.setScene(scene);
        stage.show();
    }



    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        launch(args);
    }

}

这是我的控制器

import java.io.IOException;
import java.net.URL;
import java.util.ResourceBundle;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.ListView;
import javax.swing.JOptionPane;

/**
 *
 * @author samuel
 */
public class FXMLDocumentController implements Initializable {

   @FXML
   private ListView list_todo;

   private ObservableList<String> items = FXCollections.observableArrayList();


    @Override
    public void initialize(URL url, ResourceBundle rb) {
        list_todo.setItems(items);
        items.add("First task");
        items.add("Second task");
    }    

}

问题是当我 运行 应用程序时,列表没有出现,它应该很简单,但由于某种原因它不起作用。谁能找到原因?

控制器 指定到您的 fxml 文件,所有其他详细信息如下,

<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="557.0" prefWidth="1012.0" style="-fx-background-color: #0288D1;" xmlns="http://javafx.com/javafx/9.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="FXMLDocumentController">


</AnchorPane>

添加具有完整指定名称的控制器class(包名称,如果有的话)