【发布时间】:2019-11-07 18:39:55
【问题描述】:
我正在做一个操作歌手专辑的小项目,因此该项目提供您添加新歌手以添加特定歌手的专辑并将歌曲添加到特定歌手的特定专辑,我试图让用户有机会获得歌手专辑,这样他就不必用手打字了,所以我使用了两个ComboBox,一个名为“AvailableSinger”,显然是可用的歌手,另一个是“AlbumAvailable”,用于每个歌手的可用专辑,当用户选择歌手“AlbumAvailable”将显示在“AvailableSinger”中选择的歌手的专辑
我添加了两个艺术家“Adele”和“Eminem”,但是当我选择 Eminem 时,只会显示“Adele”的“Hello”专辑。
package sample;
import MusicManiPulation.Album;
import MusicManiPulation.Singer;
import javafx.fxml.FXML;
import javafx.scene.control.Button;
import javafx.scene.control.ComboBox;
import java.util.ArrayList;
public class AddSongsToAlbum {
@FXML
ComboBox<String> AvailableSinger ;
@FXML
ComboBox<Album> AlbumAvailble ;
public void initialize(){
AvailableSinger.getItems().addAll(Singer.getInstance().GetSingerNames());
AvailableSinger.getSelectionModel().selectFirst();
ArrayList<Album> AlbumList =Singer.getInstance().getAlbumNameoforSinger(AvailableSinger.getSelectionModel().getSelectedItem());
AlbumAvailble.getItems().addAll(AlbumList);
}
}
歌手班(如果你想了解我在做什么)
package MusicManiPulation;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
public class Singer {
public static Singer Instance = new Singer();
Map<String , ArrayList<Album>>AlbumListfoEachSinger ;
private Singer() {
this.AlbumListfoEachSinger = new HashMap<>();
}
public ArrayList<String> GetSingerNames(){
ArrayList<String>SingerName = new ArrayList<>();
SingerName.addAll(AlbumListfoEachSinger.keySet());
return SingerName;
}
public Map<String, ArrayList<Album>> getAlbumListfoEachSinger() {
return AlbumListfoEachSinger;
}
public ArrayList<Album> getAlbumNameoforSinger(String SingerName){
return AlbumListfoEachSinger.get(SingerName);
}
public static Singer getInstance() {
return Instance;
}
}
您只能看到阿黛尔专辑显示,但选择其他艺术家时它不起作用。
【问题讨论】:
-
将
javafx.beans.value.ChangeListener添加到ComboBox的value属性,并根据需要更改其他ComboBox的项目。 -
看起来很简单 xD 但我不知道如何很好地覆盖它