Huhu ihrs,
ich wollte heute mal nach langer Zeit an einem alten Projekt weiter arbeiten.
Das heißt, ich wollte der vorhanden JMenuBar ein paar Aktionen hinzufügen mit ActionListenern. Allerdings scheint der nicht benutzt zu werden...
Hier ist mal ein Codeausschnitt (Beide Klassen werden benötigt, wenn ihr es ausprobieren wollt)
Die Hauptklasse mit der main:
und die Klasse mit der JMenu
Mir erschließt sich der Fehler irgendwie nicht. Ich hab dreimal geschaut ob der ActionListener hinzugefügt wurde und das wurde er ja definitiv. Und es wird auch nichtmal das erste System.out.println in der actionPerformed-Methode aufgerufen...
Sieht einer einen Fehler?
(Bei meinem Glück ist es wieder ein "Hand-vor-die-Stirn-schlag-Fehler...die hab ich öfter, aber diesmal find ich ihn nicht selber...)
Danke fürs Lesen
mit freundlichen Grüßen
Mofi
ich wollte heute mal nach langer Zeit an einem alten Projekt weiter arbeiten.
Das heißt, ich wollte der vorhanden JMenuBar ein paar Aktionen hinzufügen mit ActionListenern. Allerdings scheint der nicht benutzt zu werden...
Hier ist mal ein Codeausschnitt (Beide Klassen werden benötigt, wenn ihr es ausprobieren wollt)
Die Hauptklasse mit der main:
Java:
import java.awt.*;
import javax.swing.*;
public class Fenster{
private JFrame frame;
private Menuleiste menu;
public Fenster(){
frame = new JFrame("Vokabeltrainer v0.0");
frame.setSize(300,300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
menu = new Menuleiste();
menu.createMenu();
frame.setJMenuBar(menu);
frame.setResizable(false);
frame.setVisible(true);
}
public static void main(String[] args){
Fenster fenster = new Fenster();
}
}
und die Klasse mit der JMenu
Java:
import java.awt.event.*;
import java.awt.*;
import javax.swing.*;
public class Menuleiste extends JMenuBar{
private JMenu datei;
private JMenu vokabeln;
private JMenu hilfe;
private JMenuItem newList;
private JMenuItem loadList;
private JMenuItem saveList;
private JMenuItem beenden;
private MenuListener ml;
public Menuleiste(){
super();
}
public void createMenu(){
datei = new JMenu("Datei");
hilfe = new JMenu("Hilfe");
vokabeln = new JMenu("Vokabeln");
vokabeln.setEnabled(false);
this.add(datei);
this.add(vokabeln);
this.add(hilfe);
//MenuItems fuer Datei
newList = new JMenuItem("Liste anlegen");
newList.setName("new");
newList.addActionListener(ml);
loadList = new JMenuItem("Liste laden");
loadList.setName("load");
loadList.addActionListener(ml);
saveList = new JMenuItem("Liste speichern");
saveList.setName("save");
saveList.addActionListener(ml);
beenden = new JMenuItem("Beenden");
beenden.setName("exit");
beenden.addActionListener(ml);
datei.add(newList);
datei.add(loadList);
datei.add(saveList);
datei.addSeparator();
datei.add(beenden);
//MenuItems fuer Vokabeln
//MenuItems fuer Hilfe
}
public void enableVokabeln(boolean set){
vokabeln.setEnabled(set);
}
class MenuListener implements ActionListener{
public void actionPerformed(ActionEvent ae){
System.out.println("Im ActionListener!");
String tmp = ((JMenuItem)ae.getSource()).getName();
if(tmp.equals(newList.getName())){
//anlegen.createList();
System.out.println("Hier kommt der Code fuers anlegen rein.");
}else if(tmp.equals(loadList.getName())){
System.out.println("Hier kommt der Code fuers laden rein.");
//loadSave.load();
}else if(tmp.equals(saveList.getName())){
System.out.println("Hier kommt der Code fuers speichern rein.");
//loadSave.save();
}else if(tmp.equals(beenden.getName())){
System.exit(0);
}
}
}
}
Mir erschließt sich der Fehler irgendwie nicht. Ich hab dreimal geschaut ob der ActionListener hinzugefügt wurde und das wurde er ja definitiv. Und es wird auch nichtmal das erste System.out.println in der actionPerformed-Methode aufgerufen...
Sieht einer einen Fehler?
(Bei meinem Glück ist es wieder ein "Hand-vor-die-Stirn-schlag-Fehler...die hab ich öfter, aber diesmal find ich ihn nicht selber...)
Danke fürs Lesen
mit freundlichen Grüßen
Mofi