gpt4 book ai didi

java - 如何将arraylist实现到ListView中?

转载 作者:行者123 更新时间:2023-11-30 07:41:01 25 4
gpt4 key购买 nike

我刚开始使用 JavaFX,我觉得它很酷,所以我尝试将 ToDListItem 类的数组列表实现到我的 FXML 文件的 ListView 中

我尝试在我的 arraylist 中添加项目,它是 todoitems ,然后将它全部设置到 listView 中,它在我的 FXML 文件中有一个 id 'ToDoList' 但是当 UI 显示时似乎没有任何反应

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 文件。

<?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显示时我没有得到任何结果

最佳答案

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

This is not the recommended approach :

List<T> content = ...
getItems().setAll(content);

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

使用:

ObservableList<T> content = ...
listView.setItems(content);
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 被正确覆盖。

关于java - 如何将arraylist实现到ListView中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56673747/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com