Hallo ich bräuchte eure Hilfe.
Es geht um eine CDSammlung-Anwendung. Für die GUI wird JavaFX verwendet.
Ich will im Code MenuItems hinzufügen und unter dem Punkt "Nach Interpreten auflisten" soll er Menüpunkte erstellen anhand der Interpreten(Key) die sich in meiner HashMap befinden.
Eine kleine Übersicht der relevanten Klassen:
ich habe in meinem ViewController die MenuItems erstellt und dem EventHandler hinzugefügt, da jetzt zu jedem Menüpunkt eine Methode aufgerufen werden soll, bin ich leider ratlos wie ich auf die Menüpunkte zugreife die ich mir aus meiner HashMap geholt habe.
Siehe Methode: addInterpretItem() und handleMenu()
Folgendermaßen sieht es aus:
Ich hoffe ich habe mich ausreichend ausdrücken können, so dass ihr mich versteht. Nochmal ich will für die MenuItems deren Aufschrift ich mir aus meiner HashMap geholt habe in der ActionEvent-Methode() eine Methode zuordnen die dafür sorgt das nach Interpreten aufgelistet wird listNachInterpret(String interpret)
Ich hoffe auf eure Hilfe
Es geht um eine CDSammlung-Anwendung. Für die GUI wird JavaFX verwendet.
Ich will im Code MenuItems hinzufügen und unter dem Punkt "Nach Interpreten auflisten" soll er Menüpunkte erstellen anhand der Interpreten(Key) die sich in meiner HashMap befinden.
Eine kleine Übersicht der relevanten Klassen:
Java:
public class CDSammlung {
/**
* So sieht die HashMap aus:
* Key: Interpret
* Value: HashMap: Key:Album Value: CD-Objekt
*
* --> HashMap<Interpret, HashMap<Album, CD>>
*/
private HashMap<String, HashMap<String, CD>> sammlung;
public CDSammlung(){
sammlung = new HashMap<String, HashMap<String, String>>();
}
public void hinzufuegen(CD cd){
}
// Löscht ein CD-Objekt aus der Sammlung
public CD loeschen(String interpret, String album){
}
//Gibt die CD zu dem Interpreten und Album zurück
public void gibAlleInterpreten(){
}
// Gibt die Namen aller Interpreten zurück
public CD[] gibAlleInterpreten(){
}
// Gib alle Cds des genannten Interpreten
public CD[] gibAlleCDsVon(){
}
// Entfernt die alteCD und ersetzt sie durch die neue
public void aktualisierenCD(CD alteCD, CD neueCD){
}
}
ich habe in meinem ViewController die MenuItems erstellt und dem EventHandler hinzugefügt, da jetzt zu jedem Menüpunkt eine Methode aufgerufen werden soll, bin ich leider ratlos wie ich auf die Menüpunkte zugreife die ich mir aus meiner HashMap geholt habe.
Siehe Methode: addInterpretItem() und handleMenu()
Folgendermaßen sieht es aus:
Java:
private void addMenuAnzeigen(){
// MenuItem und Menu erzeugen mit entsprechenden Titel
MenuItem laden = new MenuItem("Laden");
dateiMenu.getItems().add(laden);
laden.setOnAction((e)->handleMenu(e));
MenuItem alleAuflisten = new MenuItem("Alle Auflisten");
anzeigenMenu.getItems().add(alleAuflisten);
alleAuflisten.setOnAction((e)->handleMenu(e));
Menu nachInterpetenAuflisten = new Menu("Nach Interpret Auflisten");
// Methode addInterpetenItems ausführen
addInterpretenItems(nachInterpetenAuflisten);
MenuItem bearbeitenCD = new MenuItem("CD Bearbeiten");
bearbeitenMenu.getItems().add(bearbeitenCD);
bearbeitenCD.setOnAction((e)->handleMenu(e));
}
private void addInterpretenItems(Menu menu){
// Laufe eine Schleife durch und hole zu allen Schlüsseln
// die Interpetetn und erstelle ein MenuItem mit dessen Namen
for(String key : sammlung.gibAlleInterpreten(){
menu.getItems().add(new MenuItem(key));
}
menu.setOnAction((e)->handleMenu(e));
}
/*
public void setHandler(Menu menu, EventHandler<ActionEvent> handler){
for (MenuItem it : menu.getItems())
{
// Wenn es sich um ein Untermenü handelt, so soll kein EventHandler zugewiesen werden
if(!(it instanceof Menu))
it.setOnAction(handler);
}
}*/
private void handleMenu(ActionEvent e){
MenuItem mi = (MenuItem) e.getSource();
String text = mi.getText();
if(mi instanceof MenuItem){
if("Laden".equalsIgnoreCase(text)){
load();
}
else if("Alle Auflisten".equalsIgnoreCase(text)){
listAlle();
}
// Hier müsste ich irgendwie mir die Interpreten. Mittels der Methode get(..) müsste
// ich doch unter Angabe einer Index auf Items zugreifen können oder?
else if(.................){
}
else if("CD Bearbeiten".equalsIgnoreCase(text)){
cdBearbeiten();
}
}
}
Ich hoffe ich habe mich ausreichend ausdrücken können, so dass ihr mich versteht. Nochmal ich will für die MenuItems deren Aufschrift ich mir aus meiner HashMap geholt habe in der ActionEvent-Methode() eine Methode zuordnen die dafür sorgt das nach Interpreten aufgelistet wird listNachInterpret(String interpret)
Ich hoffe auf eure Hilfe
Zuletzt bearbeitet: