Примечание: AlbumAvailble - это ComboBox, содержащий альбомы певца.
: Доступен Певец, а ComboBox поддерживает певцов.
Я пытаюсь отобразить песни альбома в TableView
в другом диалоге, который называется «DisplaySongs.fxml».
Я пытался создать метод в контроллере «DisplaySongs.java» для «DisplaySongs.fxml», чтобы добавить все песни альбома в таблицу. поэтому в методе, который будет отображать диалоговое окно, я передал selectedItem объекта AlbumAvailble и получил его список песен.
контроллер главного окна:
@FXML
public void Display() {
Dialog<ButtonType>DisplaySong = new Dialog<>();
DisplaySong.initOwner(DisplayBorder.getScene().getWindow());
DisplaySong.setTitle("DisPlay Songs");
FXMLLoader fxmlLoader = new FXMLLoader();
fxmlLoader.setLocation(getClass().getResource("DisplaySongs.fxml"));
try {
DisplaySong.getDialogPane().setContent(fxmlLoader.load());
}catch (IOException E){
E.getStackTrace();
}
DisplaySong.getDialogPane().getButtonTypes().add(ButtonType.CLOSE);
Optional<ButtonType> result = DisplaySong.showAndWait();
if(result.isPresent()) {
DisplaySongs controller = fxmlLoader.getController();
controller.Display(AlbumAvailble.getSelectionModel().getSelectedItem());
}
}
Контроллер отображения песен:
public class DisplaySongs {
@FXML
private TableView<Song> Songs ;
public void Display(Album Alb) {
Songs.getItems().addAll(Alb.getSongsList());
}
}
Класс Песни:
package MusicManiPulation;
import javafx.beans.property.SimpleStringProperty;
import java.time.LocalDate;
public class Song {
private SimpleStringProperty SongName = new SimpleStringProperty("") ;
private SimpleStringProperty SongLength = new SimpleStringProperty("");
private LocalDate ReleasedDay ;
public Song(String songName, String songLength, LocalDate releasedDay) {
SongName.set(songName);
SongLength.set(songLength);
ReleasedDay = releasedDay;
}
public String getSongName() {
return SongName.get();
}
public void setSongName(String songName) {
SongName.set(songName);
}
public String getSongLength() {
return SongLength.get();
}
public void setSongLength(String songLength) {
SongLength.set(songLength);
}
public LocalDate getReleasedDay() {
return ReleasedDay;
}
public void setReleasedDay(LocalDate releasedDay) {
ReleasedDay = releasedDay;
}
}
Класс альбома:
package MusicManiPulation;
import java.time.LocalDate;
import java.util.ArrayList;
public class Album {
private String AlbumNam ;
ArrayList<Song> SongsList ;
public Album(String albumNam) {
AlbumNam = albumNam;
this.SongsList = new ArrayList<>();
}
public boolean addNewSongToAlbum(String SongName , String SongLength , LocalDate ReleadsedDay) {
boolean song = findSong(SongName);
if (song) {
return false;
}
SongsList.add(new Song(SongName , SongLength,ReleadsedDay));
return true;
}
public boolean removeSong(String SongName){
for(Song song :SongsList){
if(song.getSongName().equalsIgnoreCase(SongName)){
SongsList.remove(song);
return true;
}
}
return false;
}
private boolean findSong(String SongName){
for(Song song:SongsList){
if(song.getSongName().equalsIgnoreCase(SongName)){
return true;
}
}
return false;
}
public String getAlbumNam() {
return AlbumNam;
}
public ArrayList<Song> getSongsList() {
return SongsList;
}
@Override
public String toString() {
return AlbumNam;
}
}
метод getSongList в классе Album:
public ArrayList<Song> getSongsList() {
return SongsList;
}
Каждый раз, когда я нажимаю кнопку «Дисплей», таблица пуста