簡體   English   中英

將arraylist對象存儲/跟蹤到表元素

[英]Storing/Tracking arraylist objects to table elements

問:當我以后不得不將所有ArrayList元素歸為一個單獨的ArrayList時,如何跟蹤該元素屬於JTable哪個元素?

詳細:

我有一個Media接口,以及3個實現它的類: BookMovieAlbum Album有一個ArrayList of Songs (顯然也是我制作的一個類)。

我使用Object[][]像往常一樣制作了一個JTable ,暫時可以在其中放入Stringint ,用戶可以添加行,刪除行,編輯單元格,然后我計划繼續通過數據,使在指定的每一件事情JTable ,並把它們放入一個ArrayList稱為那么listOne類型的Media ,所以我可以使用ObjectOutputStream並保存List (是的,這是在分配的需求,我已經把它簡單的個人)。

但是問題是SongsAlbum類中的ArrayList ,所以我用JTable制作了另一個JFrame ,在其中可以類似地填充該JTable ,然后我想我會將用戶提供的所有歌曲存儲到一個臨時Album -賓語。 但是我從這里去哪里呢? 如果用戶在第一個JTable刪除相應的Album ,我將無法跟蹤它們。

如果我將這些Album存儲在名為ListTwoArrayList ,並且如果用戶決定刪除ListOne中的 6號,而6號恰好是Album ,則我必須知道現在要刪除ListTwo中的哪一個,並確保因此,其他人的ID或密鑰不會受到影響,因為稍后需要正確配對。 我需要知道哪些Album的在ListTwo歌曲轉移到其的Album S IN 那么listOne,所以我可以稍后保存。

那么我將如何跟蹤並稍后將它們連接起來?

初步代碼:

媒體接口類:

public interface Media {
    void setAuthor(String author);
    String getAuthor();
}

書本類:

public class Book implements Media {

    private String author;

    Book(){
        this.author = "";

    }

    @Override
    public void setAuthor(String author) {
        this.author = author;
    }
    @Override
    public String getAuthor() {
        return this.author;
    }

}

CD(專輯)類

import java.util.ArrayList;

public class CD implements Media {

    public class Song {
        private int seconds;
        private String songName;
        private String artist;

        Song(String name, int seconds, String artist){
            this.songName = name;
            this.seconds = seconds;
            this.artist = artist;
        }

        public String getName(){
            return this.songName;
        }
        public void setName(String name){
            this.songName = name;
        }
    }

    private ArrayList<Song> songs;

    private String artist;

    CD(){
        songs = new ArrayList<Song>();
        this.artist = "";
    }

    public void addSong(String name, int seconds, String artist){
        this.songs.add(new Song(name, seconds, artist));
    }
    public void removeSong(int position){
        this.songs.remove(position);
    }

    @Override
    public void setAuthor(String author){
        this.artist = author;
    }

    @Override
    public String getAuthor(){
        return this.artist;
    }
}

電影課:

public class Movie implements Media {

    private String producer;

    Movie(){
        this.producer = "";
    }

    @Override
    public void setAuthor(String author){
        this.producer = author;
    }
    @Override
    public String getAuthor(){
        return this.producer;
    }
}

表格: http//pastebin.com/ETJGuQhD

我的解決方案是制作3個“添加”按鈕,而不是一個-每個可以添加到最終ArrayList的對象類型一個。 然后,我制作了三個單獨的添加函數,每個按鈕一個,並且在每個函數中,我不僅添加了已經選擇的特定類型的行,而且還將該類型的對象直接添加到最終的ArrayList中。 然后,我將table.getRowSelection()用作createTable函數的一部分,以在完成歌曲列表時選擇要更改的ArrayList中的哪一個。 之后將歌曲直接存儲在指出的專輯對象中。

這樣,即使有些笨拙,我也可以確保一切都在正確的位置。 但是我寧願准時完成而不願按時完成。

暫無
暫無

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

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