gpt4 book ai didi

java - 如何从数组列表中删除对象(包括组件)?

转载 作者:行者123 更新时间:2023-12-01 10:44:04 25 4
gpt4 key购买 nike

我正在开发一个任务规划应用程序。我有一个“新任务”按钮来添加任务。单击时,此按钮会创建一个 TaskRowToDo 类的新实例,并将其添加到 toDoList 数组列表中。此类包含一行、一个文本字段和一些按钮。

这是“新任务”按钮代码:

private void drawNewBtn(){
JButton btnNew = new JButton("Nieuwe taak");
btnNew.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.out.println("New task added");
toDoList.add(new TaskRowToDo(toDoIndex+7, false, "new task", 2));
toDoList.get(toDoIndex).draw();
toDoIndex++;
frmPlanner.revalidate();
}
});
frmPlanner.getContentPane().add(btnNew, "cell 3 12");
}

TaskRowToDo 的末尾有一个“删除”按钮。此按钮应从 toDoList 中删除该行,并从屏幕中删除该行。

下面是“删除”按钮代码:

btnRemoveToDo.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.out.println("To Do removed");
toDoIndex--;
toDoList.remove(toDoIndex);
frmPlanner.revalidate();
}
});

该按钮从 toDoList 中删除 TaskRowToDo 的实例,但它仍然显示在屏幕上,并且组件甚至可以工作。所以它并没有真正被删除。我尝试过使用 revalidate() 和 repaint() 但无济于事。作为测试,我尝试了 frmPlanner.removeAll() ,即使这样也不会清除屏幕(但是组件将不再工作)。

如何删除这一行(包括其组件)并清除屏幕上的该空间?

最佳答案

toDoList 是 JList 吗?给出同样的更多代码,这次我建议在 JList 上 setModel。当我创建 JList 时,我总是准备方法 setModel 并且它有效:

    private void setModelForJList() {
toDoList.setModel(new ListModel<TaskRowToDo>() {

@Override
public int getSize() {
return toDoListEntityList.size();
}
@Override
public TaskRowToDogetElementAt(int index) {
return toDoListEntityList.get(index);
}
@Override
public void removeListDataListener(ListDataListener l) {
}
@Override
public void addListDataListener(ListDataListener l) {
}
});
toDoList.repaint();
}

当你从JList中删除对象时,调用此方法,toDoListEntityList是你放入Jlist中的对象列表。

关于JList的一些建议。好的做法是声明 JList 的通用类型(在您的例子中是 JList<TaskRowToDo> toDoList= new JList<TaskRowToDo>

关于java - 如何从数组列表中删除对象(包括组件)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34299192/

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