[英]Storing/Tracking arraylist objects to table elements
問:當我以后不得不將所有ArrayList
元素歸為一個單獨的ArrayList
時,如何跟蹤該元素屬於JTable
哪個元素?
詳細:
我有一個Media
接口,以及3個實現它的類: Book
, Movie
, Album
。 Album
有一個ArrayList
of Songs
(顯然也是我制作的一個類)。
我使用Object[][]
像往常一樣制作了一個JTable
,暫時可以在其中放入String
, int
,用戶可以添加行,刪除行,編輯單元格,然后我計划繼續通過數據,使在指定的每一件事情JTable
,並把它們放入一個ArrayList
稱為那么listOne類型的Media
,所以我可以使用ObjectOutputStream
並保存List
(是的,這是在分配的需求,我已經把它簡單的個人)。
但是問題是Songs
是Album
類中的ArrayList
,所以我用JTable
制作了另一個JFrame
,在其中可以類似地填充該JTable
,然后我想我會將用戶提供的所有歌曲存儲到一個臨時Album
-賓語。 但是我從這里去哪里呢? 如果用戶在第一個JTable
刪除相應的Album
,我將無法跟蹤它們。
如果我將這些Album
存儲在名為ListTwo的ArrayList
,並且如果用戶決定刪除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.