[英]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.