簡體   English   中英

如何從arraylist中刪除對象(包括組件)?

[英]How to remove object (including components) from arraylist?

我正在開發任務計划應用程序。 我有一個“新任務”按鈕來添加任務。 單擊后,此按鈕將創建TaskRowToDo類的新實例,並將其添加到toDoList arraylist。 此類包含一行帶有文本字段和一些按鈕的行。

這是“新任務”按鈕代碼:

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>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM