当前位置: 首页 > 知识库问答 >
问题:

从JavaFX中的fxml文件填充ListView,空ListView

程祺
2023-03-14

您好,我从javafx开始我的冒险,我使用SceneBuilder制作主题,这是我的XML文件:http://pastebin.com/9fvhREKc控制器:

public class Controller {

@FXML
private ListView templates;
@FXML
private ImageView image;

@FXML
void initalize() {
    ObservableList elements = FXCollections.observableArrayList();
    elements.add("first");
    elements.add("second");
    elements.add("third");
    image.setImage(new Image("file:test.jpg"));
    templates.setItems(elements);
}

}我的主课呢

public class Main extends Application {

@Override
public void start(Stage primaryStage) throws Exception {
    FXMLLoader loader = new FXMLLoader();
    loader.setLocation(this.getClass().getResource("Sample.fxml"));
    Controller controller = new Controller();
    loader.setController(controller);
    Pane root = loader.load();
    Scene scene = new Scene(root);
    primaryStage.setTitle("Hello World!");
    primaryStage.setScene(scene);
    primaryStage.show();
}

public static void main(String[] args) {
    launch(args);
}

}当我开始应用我的主题作品,但列表和图像是空的/

共有1个答案

解晟睿
2023-03-14

您需要在加载FXML之前设置控制器,因为控制器的初始化方法是作为load()过程的一部分调用的:

FXMLLoader loader = new FXMLLoader();
loader.setLocation(this.getClass().getResource("Sample.fxml"));
Controller controller = new Controller();
loader.setController(controller);
Pane root = loader.load();
Scene scene = new Scene(root);

还要注意的是,您的控制器类中有一个拼写错误:方法名initialize拼写错误。由于FXMLLoader使用反射来查找和执行此方法,这将阻止执行此方法:

public class Controller {

    @FXML
    private ListView templates;
    @FXML
    private ImageView image;

    @FXML
    // void initalize() {
    void initialize() {
        ObservableList elements = FXCollections.observableArrayList();
        elements.add("first");
        elements.add("second");
        elements.add("third");
        image.setImage(new Image("file:test.jpg"));
        templates.setItems(elements);
    }

} 
 类似资料:
  • 如何在FXML中定义表,然后使用JavaFX代码在运行时动态填充表?

  • 问题内容: 我有一个JSON请求,该请求从youtube返回一个响应,其中包含对特定视频的评论。我目前有3种文本视图:一种用于名称/上载器,一种用于内容,一种用于发布日期- 然后用我的JSON响应中的数据填充。 我的问题是-仅出现第一个评论,发布日期和上传者。 我相信我将需要用列表视图替换我的textviews并将其解析为3个字段-我只是不知道如何。 爪哇 公共类Player扩展了YouTubeB

  • 问题内容: 我正在尝试从JSON显示listview中的元素: JsonURL - activity_main.xml JSONParser.java row.xml MainActivity.java 我试图将数据从JSON填充到listView,在填充时有些含糊 该功能要使用什么集合? 任何想法,这看起来都很简单,但对于像我这样的初学者,它需要付出很多努力来学习 谢谢 , 问题答案: 继续上课

  • 我有一块碎片。加载的视图的onCreateView方法上的这个片段有一个ListView(a)(在适配器(a)中填充)。但是,此ListView(A)中有另一个ListView(B)。所以现在,我必须调用适配器(B)来填充这个listview(B)。如果我从片段调用它,我会得到一个空指针,如果我从适配器调用它(a),它不会崩溃,但不会工作。 如何调用另一个适配器中的适配器。 这是片段的代码: 其中