簡體   English   中英

Getter方法返回null。 Java MVC

[英]Getter method returns null. Java MVC

我已經用了整整一天的時間在Google上搜索,但找不到我的問題的答案。

我正在使用MVC模式。 基本上,我有一個需要在JTable顯示的歌曲列表(id,標題,作者等)。 歌曲存儲在MySQL數據庫中。數據庫連接正常。

我目前正在將數據庫中的所有記錄存儲在“ ArrayList”中

這是我到目前為止的內容:

存儲歌曲的代碼:

SongDAO songDAO = new SongDAO();
ArrayList<Song> songs = songDAO.findAll();

打印出歌曲時,得到以下輸出:

[oop.model.entities.Song@1055e4af, oop.model.entities.Song@3caeaf62, oop.model.entities.Song@e6ea0c6, oop.model.entities.Song@6a38e57f]

這是我播放第一首歌的地方:

if (songs.isEmpty()) {
    library = null; 
} else {
    library = songs.get(0);
    Mainframe.setVisible(true);
    firstController();
}

public static Library getLibrary() {
    return library; 
}

庫的靜態工廠方法:

public static void firstController() {
    new libraryController(view.libraryView);
}

我很確定問題出在這里。 我只是無法解決我的一生。

public class libraryController {
   private libraryView view;

   public libraryController(libraryView view) {
       this.view = view;
        for (Song song : baseController.getLibrary().getSongs()) {
            view.addSong(song);
        }
        updateView();
    }

    public void updateView() {
        view.setSongs(baseController.getLibrary().getSongs());
    }
}

我已經嘗試過System.out.println(baseController.getLibrary().getSongs()) ,但是我得到的只是[ ] 這使我相信getSongs()方法是原因。

public void setSongs(ArrayList<Song> songs) {
    for (Song song : songs) {
        addSong(Song);
    }
}

public void addSong(Song song) {
    Object[] row = new Object[]{song.getId(), song.getTitle(), song.getArtist(), song.getAlbum(), song.getGenre(), song.getYear()};
    model.addRow(row);
}

這是我的圖書館課:

public class Library {
    private ArrayList<Song> songs;
    private int id;
    private Song song;

    public Library() {
        id=0;
        songs = new ArrayList<Song>(20);
    }

    public ArrayList<Song> getSongs() {
        return songs;
    }

    public Libreria setSongs(ArrayList<Song> songs) {
        this.songs = songs;
        return this;
    }
}

我的歌曲課:

public class Song extends Library {
    private int id;
    private String title;
    private String artist;
    private String album;
    private String genre;
    private int year;
    private Library library;

    public Song(){
        id = 0;
    } 

    public int getId() {return id; }

    public void setId(int id) {this.id = id;}

    public String getTitle() { return title;}

    public void setTitle(String title) {this.title = title;}

    public String getArtist() { return artist;}

    public void setArtist(String artist) {this.artist = artist;}

    public String getAlbum() {return album;}

    public void setAlbum(String album) {this.album = album; }

    public String getGenre() {return genre;}

    public void setGenre(String genre) {this.genre = genre;}

    public int getYear() {return year;}

    public void setYear(int year) {this.year = year;}

    public Library getLibrary() {return library;}

    public Song setLibrary(Library library) {
        this.library = library;
        return this;
    }
}

如果有人可以幫助我,將不勝感激。

基本上我必須在JTable中顯示我的歌曲(“ id”,“ title”,“ author”,“ ..”)

Swing組件已經使用MVC的修改版進行了設計。

如果要在JTable中顯示數據,則只需將數據加載到TableModel中。

因此,您可能想創建一個自定義TableModel,以便保存Song對象。

簽出表行模型

它逐步介紹了如何為Song對象創建自定義模型。 或者,如果您願意,可以使用通用TableRowModel編碼。

創建SongTableModel后,要使用的代碼將類似於:

SongTableModel model = new SongTableModel( songs );
JTable table = new JTable( model );

暫無
暫無

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

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