首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在ListView中实现数组列表?

如何在ListView中实现数组列表?
EN

Stack Overflow用户
提问于 2019-06-20 02:24:18
回答 1查看 660关注 0票数 2

我刚刚开始使用JavaFX,我发现它非常酷,所以我尝试将ToDListItem类的arraylist实现到我的FXML文件的listView中。

我尝试在我的todoitems数组列表中添加项目,然后将其全部设置到在我的FXML文件中具有id 'ToDoList‘的listView中,但是当UI显示时似乎没有发生任何事情

代码语言:javascript
复制
package sample;
import javafx.fxml.FXML;
import javafx.scene.control.ListView;
import javafx.scene.control.SelectionMode;
import sample.ToDoList.ToDoItem;

import java.time.LocalDate;
import java.time.Month;
import java.util.ArrayList;
import java.util.List;

public class Controller {
    private List<ToDoItem> todoitems;

    @FXML
    private ListView ToDoList ;

    public void intialize(){
        ToDoItem item1= new ToDoItem("Going to Sea","Going to Sea with thamer and kais",
                LocalDate.of(2020, Month.JUNE,16));
        ToDoItem item2= new ToDoItem("JavaFx","Getting ready for real programming real world stuff",
                LocalDate.of(2020, Month.JULY,14));
        ToDoItem item3= new ToDoItem("Sleep & Chill","Going to Watch Youtube Later & Chill",
                LocalDate.of(2020, Month.JANUARY,13));

        todoitems= new ArrayList<>();

        todoitems.add(item1);
        todoitems.add(item2);
        todoitems.add(item3);

        ToDoList.getItems().setAll(todoitems);
        ToDoList.getSelectionModel().setSelectionMode(SelectionMode.SINGLE);
    }
}

FXML文件。

代码语言:javascript
复制
<?import javafx.scene.layout.BorderPane?>
<?import javafx.scene.control.ListView?>
<BorderPane fx:controller="sample.Controller"  xmlns:fx="http://javafx.com/fxml">
  <left>
      <ListView fx:id="ToDoList">
      </ListView>
  </left>
</BorderPane>

当UI显示时,我没有得到任何结果

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-20 04:44:33

该方法应命名为initialize,而不是intialize。我宁愿使用javafx.fxml.Initializable来避免拼写错误的问题。

This is not the recommended approach

代码语言:javascript
复制
List<T> content = ...
getItems().setAll(content);

上面显示的方法的问题是内容列表被复制到项目列表中。

使用:

代码语言:javascript
复制
ObservableList<T> content = ...
listView.setItems(content);
代码语言:javascript
复制
public class Controller {
    private final List<ToDoItem> todoItems = FXCollections.observableArrayList();

    @FXML
    private ListView ToDoList ;

    public void initialize() {
        ToDoList.setItems(todoItems);
        ToDoList.getSelectionModel().setSelectionMode(SelectionMode.SINGLE);
        populate();
    }

    private void populate () {
        todoItems.add(new ToDoItem("Going to Sea","Going to Sea with thamer and kais",
                LocalDate.of(2020, Month.JUNE,16)));
        todoItems.add(new ToDoItem("JavaFx","Getting ready for real programming real world stuff",
                LocalDate.of(2020, Month.JULY,14)));
        todoItems.add(new ToDoItem("Sleep & Chill","Going to Watch Youtube Later & Chill",
                LocalDate.of(2020, Month.JANUARY,13)));
    }
}

确保方法ToDoItem.toString被正确覆盖。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56673747

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档