【问题标题】:Storing/Tracking arraylist objects to table elements将数组列表对象存储/跟踪到表元素
【发布时间】:2017-03-12 10:14:32
【问题描述】:

问:我如何跟踪哪个ArrayList 元素属于JTable 中的哪个元素,以便以后我必须将它们全部放在一个ArrayList 中?

详细:

我有一个接口 Media,以及实现它的 3 个类:BookMovieAlbumAlbum 有一个 ArrayListSongs(显然也是我制作的一个类)。

我像往常一样使用Object[][] 制作了JTable,我可以暂时输入Strings、ints 等,用户可以添加行、删除行、编辑单元格,然后后来我计划检查数据并制作JTable中指定的每个东西并将它们放入Media类型的名为ListOneArrayList中,这样我就可以使用ObjectOutputStream和保存List(是的,这是作业中的要求,我个人会保持简单)。

但问题是SongsAlbum 类中的ArrayList,所以我用JTable 制作了另一个JFrame,其中一个可以类似地填写那个,然后我想我会将用户提供的所有歌曲存储到一个临时的Album-object 中。但我从这里去哪里?如果用户在第一个JTable 中删除相应的Album,我将无法像这样跟踪它们。

如果我将这些 Albums 存储在一个名为 ListTwoArrayList 中,并且如果用户决定删除 ListOne 中的第 6 号和第 6 号恰好是Album,我现在必须知道要在 ListTwo 中删除哪个,并确保其他人的 ID 或密钥不会因此受到影响,因为我需要正确配对它们之后。我需要知道 ListTwoAlbum 的哪些歌曲要转移到 ListOne 中的 Album 中,以便以后保存。

那么我将如何跟踪这些并在以后将它们连接起来?

初步代码:

媒体接口类:

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

【问题讨论】:

标签: java swing arraylist


【解决方案1】:

我的解决方案是制作 3 个添加按钮,而不是一个 - 为可以添加到最终 ArrayList 的每种类型的对象一个。然后我制作了三个单独的添加函数,每个按钮一个,并且在每个函数中,我不仅添加了一个已经选择了特定类型的行,我还将该类型的对象直接添加到最终的 ArrayList 中。然后,当我完成歌曲列表时,我使用 table.getRowSelection() 作为 createTable 函数的一部分来选择 ArrayList 中要更改的那个。之后歌曲直接存储在指向的 Album 对象中。

这样我可以确保一切都在正确的位置,即使它有点笨重。但我宁愿按时完成也不愿不按时完成。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-08
    • 2018-03-01
    • 2017-06-03
    • 2019-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多