ActionListener in MVC

Sin137

Mitglied
Hallo liebe Community,

ich bin gerade dabei mich etwas an MVC auszuprobieren.
Ich habe nun eine View-Klasse, die ein menü erstellen soll

Java:
package de.jonathan_puxler.view;

import java.awt.Color;
import java.awt.Toolkit;
import java.awt.event.KeyEvent;
import java.util.Observable;
import java.util.Observer;

import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.KeyStroke;

import de.jonathan_puxler.controller.MenuController;
import de.jonathan_puxler.model.MenuModel;

@SuppressWarnings("serial")
public class MenuView extends JMenuBar implements Observer{

    private MenuController _controller;
    private MenuModel _model;
   
    private JMenuItem menuItem;
    private JMenu menu, submenu;
    private Color bb = new Color(4,96,173);
   
    public MenuView(){
        _controller = new MenuController(this);
       
        menuItem = new JMenuItem();
        menu = new JMenu();
        this.setBackground(bb);
        this.setForeground(Color.white);
        createFileMenu();
    }
   
    public void createFileMenu(){
        menu = new JMenu("Datei");
        menu.setMnemonic(KeyEvent.VK_D);
        menu.setForeground(Color.white);
       
        //Neue Abfrage erstellen
        submenu = new JMenu("Neue Abfrage");
        submenu.setMnemonic(KeyEvent.VK_N);
        submenu.setForeground(bb);
        submenu.setActionCommand("Neue Abfrage");
        _controller.controllSubmenu();
        menu.add(submenu);
       
        menuItem = new JMenuItem("Beispiel");
        menuItem.setForeground(bb);
        menuItem.setActionCommand("Beispiel");
        _controller.controllMenuItem(menuItem);
        submenu.add(menuItem);
       
        menuItem = new JMenuItem("Aus Kategorie auswählen");
        menuItem.setForeground(bb);
        menuItem.setActionCommand("Aus Kategorie auswählen");
        _controller.controllMenuItem(menuItem);
        submenu.add(menuItem);
       

        //Abgespeicherte Abfrage öffnen
        menuItem = new JMenuItem("Abfrage öffnen");
        menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,
                Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
        menuItem.setForeground(bb);
        _controller.controllMenuItem(menuItem);
               
       
        //Programm Beenden
        menuItem = new JMenuItem("Beenden");
        menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,
                Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
        menuItem.setForeground(bb);
        menuItem.setBackground(Color.red);
        menu.add(menuItem);
        _controller.controllMenuItem(menuItem);
   
   
        menu.add(menuItem);
        add(menu);
    }
   
    public Color getColor(){
        return bb;
    }
   
    public JMenu getSubmenu(){
        return submenu;
    }
   
    public JMenu getMenu(){
        return menu;
    }
   
    public JMenuItem getMenuItem(){
        return menuItem;
    }

    @Override
    public void update(Observable arg0, Object arg1) {
        // TODO Auto-generated method stub
       
    }
   
   
   
   
   
   
}

und eine Controller-Klasse wo meines Wissens die Listener enthalten sind.

Java:
package de.jonathan_puxler.controller;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Observable;
import java.util.Observer;

import javax.swing.JMenu;
import javax.swing.JMenuItem;

import org.omg.Messaging.SyncScopeHelper;

import de.jonathan_puxler.model.MenuModel;
import de.jonathan_puxler.view.MenuView;

public class MenuController implements Observer{
   
    private MenuView _view;
    private MenuModel _model;
       
    public MenuController(MenuView _view){
        this._view = _view;
       
    }
   
    public void controllMenu(JMenu menu){
    }
   
    public void controllSubmenu(){
       
        _view.getSubmenu().addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                String actionCommand = ((JMenu)e.getSource()).getActionCommand();
                System.out.println("Testausgabe Zeile: 35");
                if(actionCommand.equals("Neue Abfrage")){
                }
               
            }
        });
    }
   
   
    public void controllMenuItem(JMenuItem menuItem){
               
    }
       
    @Override
    public void update(Observable o, Object arg) {
        // TODO Auto-generated method stub
       
    }
   
   
}

angezeigt wird mir alles genau, nur wenn ich jetzt auf mein submenü drücke kommt nicht die gewünschte ausgabe. Sprich es funktioniert leider nicht.


Ideen oder Vorschläge zur Fehlerlösung?
Oder ist der Ansatz falsch die Listener in die Controllerklassen zu stecken?



Mit freundlichen Grüßen

Sin
 

Joose

Top Contributor
angezeigt wird mir alles genau, nur wenn ich jetzt auf mein submenü drücke kommt nicht die gewünschte ausgabe. Sprich es funktioniert leider nicht.

Ohne mir den Code angeschaut zu haben: Welche Ausgabe erwartest du? Welche Ausgabe bekommst du?

"Funktioniert nicht" als Fehlerbeschreibung beim Programmieren leider nicht sehr hilfreich. Normalerweise passieren Fehler und es wird eine Exception geschmissen (Fehlermeldung + StackTrace) oder das Programm verhält sich falsch dann sollte man natürlich auch beschreiben was sich falsch verhält ;)
 

Sin137

Mitglied
Also Fehlermeldung bekomme ich nicht, da alles läuft.
Das was nicht ausgegeben wird ist das was in dem Controller steht:
System.out.println("Testausgabe Zeile: 35");
So wie es ausschaut wird der ActionListener nicht richtig registriert.
Denke ich übersehe was oder bin mit der oo grad durcheinander.
Ausgegeben wird ja nichts....
 

Joose

Top Contributor
Hm sicher bin ich mir nicht, aber ich glaube es liegt ein Denkfehler vor:

Eine JMenu ist nur als Container gedacht für anderen JMenu Objekte und JMenuItems.
Man kann zwar einen ActionListener anhängen bin mir aber nicht sicher wie und ob das funktioniert!
Verwende doch lieber ein JMenuItem :)
 

Sin137

Mitglied
Kann ich mit einem JMenuItem auch ein Untermenü erzeugen lassen?
Mein vorhaben:
Entweder draufdrücken und dann per Fenster auswählen o.
ins untermenü gehen und da schon ein schritt Spezifischer auswählen.


LG

Sin
 

Sin137

Mitglied
Habe noch einmal rumprobiert.
Meine Vorgehensweiße mit einem JMenuItem funktioniert.
Liegt wohl dann wirklich daran, dass man kein JMenu mit einem ActionListener belegen "kann".
Submenu zum JMenuItem habe ich jetzt soweit nicht hinbekommen.
Wenn jemand weiß, wie dies funktioniert wäre ich ihm sehr dankbar.


LG

Sin
 

Joose

Top Contributor
Submenu zum JMenuItem habe ich jetzt soweit nicht hinbekommen.
Wenn jemand weiß, wie dies funktioniert wäre ich ihm sehr dankbar.

Das wird so nicht funktionieren. Das JMenu selbst dient nur als Container für die einzelnen JMenuItems (und weitere JMenus).
Wirklich Aktionen ausführen tun aber nur JMenuItems.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Button ActionListener funktioniert nicht AWT, Swing, JavaFX & SWT 1
B Actionlistener mit Java Swing AWT, Swing, JavaFX & SWT 2
L jComboBox Actionlistener wird beim erstmaligen Befüllen getriggert AWT, Swing, JavaFX & SWT 7
H Viele ActionListener (MouseListener) - Performance AWT, Swing, JavaFX & SWT 24
pkm MainFrame durch Actionlistener auffrischen, aber wie? AWT, Swing, JavaFX & SWT 2
L actionListener für Button AWT, Swing, JavaFX & SWT 97
R Actionlistener funktioniert nicht AWT, Swing, JavaFX & SWT 4
N Bilder auf Button einfügen und mehrmals ändern (ein Button, mehrere ActionListener) AWT, Swing, JavaFX & SWT 2
R ActionListener in Actionlistener AWT, Swing, JavaFX & SWT 6
S Swing Variable in Actionlistener aufrufen AWT, Swing, JavaFX & SWT 10
P Swing ActionListener überschreibt einen Wert aus der Hauptklasse nicht AWT, Swing, JavaFX & SWT 5
N Aufruf einer anderen Klasse durch Button ActionListener AWT, Swing, JavaFX & SWT 2
M AWT Kann meinen Fehler beim ActionListener nicht finden AWT, Swing, JavaFX & SWT 5
F Wie bekomme ich den Wert der ComboBox in eine Variable gespeichert welche ich für meinen ActionListener nutzen kann? AWT, Swing, JavaFX & SWT 3
L Ein Actionlistener für ein Textfeld, anstatt viele Actionlistener für ein Textfeld AWT, Swing, JavaFX & SWT 7
coolian ActionListener funktonirt nicht richtig auf JMenuItem AWT, Swing, JavaFX & SWT 4
L ActionListener zu Button in Panel hinzufügen AWT, Swing, JavaFX & SWT 10
R Kann JLabel in ActionListener nicht aufrufen AWT, Swing, JavaFX & SWT 4
Blender3D einzelner ActionListener vs anonyme ActionListener AWT, Swing, JavaFX & SWT 10
T Swing Änderung des ActionListener Events nach Klick auf JButton AWT, Swing, JavaFX & SWT 2
xYurisha ActionListener Methoden Buttons zuweisen! AWT, Swing, JavaFX & SWT 16
J ActionListener bei Buttons AWT, Swing, JavaFX & SWT 14
S Swing Problem mit Button und ActionListener AWT, Swing, JavaFX & SWT 5
it_is_all ActionListener umlenken/ updaten mit AddActionListener funktioniert nicht AWT, Swing, JavaFX & SWT 3
it_is_all Event Handling ActionListener in anderer Klasse klappt nicht AWT, Swing, JavaFX & SWT 4
F "ActionListener" funktioniert nicht AWT, Swing, JavaFX & SWT 4
Z ActionListener Variable übergeben AWT, Swing, JavaFX & SWT 12
T JProgressbar während actionListener updaten AWT, Swing, JavaFX & SWT 1
S While Schleife im Actionlistener AWT, Swing, JavaFX & SWT 1
S ActionListener für alle Buttons AWT, Swing, JavaFX & SWT 26
R Swing ActionListener bei JButton AWT, Swing, JavaFX & SWT 9
T ActionListener nimmt JTextField nicht mehr an. AWT, Swing, JavaFX & SWT 2
P ActionListener Graphics Einbauen AWT, Swing, JavaFX & SWT 0
S actionlistener mit 2 fenster integrieren AWT, Swing, JavaFX & SWT 11
Liondary GUI - ActionListener AWT, Swing, JavaFX & SWT 7
J ActionListener erkennt Variable nicht AWT, Swing, JavaFX & SWT 6
E ActionListener führt falsche Funktion aus AWT, Swing, JavaFX & SWT 6
M ActionListener und mathematische Methoden AWT, Swing, JavaFX & SWT 13
A Oberfläche mit zwei Klassen und actionlistener verbinden AWT, Swing, JavaFX & SWT 7
Paul15 ActionListener Variablen AWT, Swing, JavaFX & SWT 13
Y ActionListener AWT, Swing, JavaFX & SWT 2
K Ereignisbehandlung, ActionListener, ActionEvent AWT, Swing, JavaFX & SWT 3
A Gui für Vokabeltrainer (ActionListener) AWT, Swing, JavaFX & SWT 14
C Im ActionListener Buttons disablen, einen Thread starten, dann Buttons enablen AWT, Swing, JavaFX & SWT 2
M JTextArea wird nicht aktualisiert (ActionListener-Problem) AWT, Swing, JavaFX & SWT 1
J Event Handling JOptionPane ActionListener setzen. AWT, Swing, JavaFX & SWT 3
S ActionListener Klasse aufrufen AWT, Swing, JavaFX & SWT 4
R Swing Problem: IOException bei ActionListener AWT, Swing, JavaFX & SWT 1
J ActionListener soll auf paint() Methode zugreifen AWT, Swing, JavaFX & SWT 1
A JButton wird bei ActionListener nicht "angenommen" AWT, Swing, JavaFX & SWT 7
T Einfaches Problem mit ActionListener AWT, Swing, JavaFX & SWT 2
K ActionListener mit KeyListener AWT, Swing, JavaFX & SWT 7
K GUI, Button, ActionListener - ein paar Einsteigerprobleme AWT, Swing, JavaFX & SWT 1
W Verschachtelter ActionListener AWT, Swing, JavaFX & SWT 0
N gewünschte ActionListener bei RadioButton mit isSelected geht nicht AWT, Swing, JavaFX & SWT 2
C Probleme mit Buttons und einem ActionListener AWT, Swing, JavaFX & SWT 2
K Swing JMenu und ActionListener AWT, Swing, JavaFX & SWT 4
A Swing ActionListener AWT, Swing, JavaFX & SWT 8
V ActionListener Abhängigkeitenproblem AWT, Swing, JavaFX & SWT 6
M ActionListener für mehrere Klassen AWT, Swing, JavaFX & SWT 4
J ActionListener für Buttons AWT, Swing, JavaFX & SWT 3
M Event Handling ActionListener übergeben ich checks net AWT, Swing, JavaFX & SWT 4
C Swing ComboBox - ActionListener deaktivieren AWT, Swing, JavaFX & SWT 2
S Button (ActionListener) funktioniert nicht, wenn y-Koordinate verändert wird AWT, Swing, JavaFX & SWT 5
L Swing ActionListener führt seine Aufgabe nur teilweise aus. AWT, Swing, JavaFX & SWT 7
A Swing ActionListener kann nicht hinzugefügt werden AWT, Swing, JavaFX & SWT 4
P Actionlistener - 3 klassen - kompliziert - auf methoden zugreifen AWT, Swing, JavaFX & SWT 3
Q CardLayout, ausgelagerte Panels, ActionListener AWT, Swing, JavaFX & SWT 5
M ProgressBar in ActionListener AWT, Swing, JavaFX & SWT 4
D AWT eigenem Knopf ActionListener zuweisen AWT, Swing, JavaFX & SWT 24
E Wert aus ActionListener geben AWT, Swing, JavaFX & SWT 4
J ActionListener per Innere Klasse oder e.getActionCommand() if-Abfrage? AWT, Swing, JavaFX & SWT 12
L Swing ActionListener zugriff auf bestimmte Elemente AWT, Swing, JavaFX & SWT 3
P Swing Seltsames ActionListener-Verhalten AWT, Swing, JavaFX & SWT 7
Oliver530 ActionListener von eigener ButtonKlasse AWT, Swing, JavaFX & SWT 16
Kenan89 statischer ActionListener keine Wirkung? AWT, Swing, JavaFX & SWT 2
Kenan89 statischer ActionListener keine Wirkung? AWT, Swing, JavaFX & SWT 3
C In der Schleife ActionListener aktivieren AWT, Swing, JavaFX & SWT 3
B Swing Problem beim ActionListener AWT, Swing, JavaFX & SWT 5
P Swing JPanel mit ActionListener mehrfach verwenden AWT, Swing, JavaFX & SWT 8
1 ActionEvent generieren und an ActionListener weiterleiten AWT, Swing, JavaFX & SWT 12
N Swing Klasse erbt von JDialog - Problem mit innerer ActionListener-Klasse AWT, Swing, JavaFX & SWT 6
N JCombobox und Actionlistener Aktion nur ausführen, wenn Useraktion ihn auslöst AWT, Swing, JavaFX & SWT 4
N Componente und Actionlistener AWT, Swing, JavaFX & SWT 5
C ActionListener AWT, Swing, JavaFX & SWT 6
Corben ActionListener Error AWT, Swing, JavaFX & SWT 2
F Wert durch ActionListener an Klasse übergeben AWT, Swing, JavaFX & SWT 3
I Swing Problem mit InputMap bei JButton (ActionListener) AWT, Swing, JavaFX & SWT 3
S Swing JButton mit ActionListener innerhalb einer JTable AWT, Swing, JavaFX & SWT 4
P Variablen in einem ActionListener zurücksetzen AWT, Swing, JavaFX & SWT 6
M AWT Problem mit ActionListener AWT, Swing, JavaFX & SWT 2
A Swing Bug in Swing? Wenn checkbox disabled reagiert ActionListener nicht AWT, Swing, JavaFX & SWT 5
S ActionListener "nach oben weitergeben" AWT, Swing, JavaFX & SWT 10
M Anonymer ActionListener AWT, Swing, JavaFX & SWT 4
L SWT Actionlistener Combobox öffnen AWT, Swing, JavaFX & SWT 4
S MenuBar ActionListener Event ... AWT, Swing, JavaFX & SWT 6
B Swing Formular mit mehreren Elementen - wie die ActionListener-Verarbeitung lösen? AWT, Swing, JavaFX & SWT 2
M getSource() findet Button nicht - ActionListener AWT, Swing, JavaFX & SWT 4
S Swing mit ActionListener auf Objekte einer anderen Klasse zugreifen AWT, Swing, JavaFX & SWT 3
G Swing Button ActionListener macht komische Sachen AWT, Swing, JavaFX & SWT 19

Ähnliche Java Themen

Neue Themen


Oben