Swing MVC mit mehreren Klassen

MichaProgs

Aktives Mitglied
Hallo liebe Community,

nachdem meine letzte Frage bezüglich von public static Feldern (http://www.java-forum.org/awt-swing-javafx-and-swt/164536-public-static-gui-fuer-crm-erp.html) ausreichend beantwortet wurde, möchte ich auf dieser Grundlage eine weitere Frage stellen. Mir wurde geraten das sogenannten MVC (Model - View - Controller) für mein Projekt zu verwenden. Entsprechende Tutorials hierzu habe ich ebenfalls schon gefunden und verstanden. Nun mein folgendes Problem:

In Tutorials wird lediglich immer die Grundlage gezeigt. Eine Klasse für den View, eine für Controller und eine für das Model. Nun habe ich ein größeres Projekt und möchte somit auch mehrere Viewklassen, Controllerklassen und Modelklassen. Leider funktionieren meine Controller nicht. Der View wird korrekt dargestellt (ein Model wird bisher nicht benötigt).

View für das Fenster

Java:
package de.strimi.mvc.view;

import java.awt.BorderLayout;
import java.awt.Dimension;

import javax.swing.JFrame;

public class ViewWindow extends JFrame{
	private static final long serialVersionUID = -6377398743774473382L;

	public ViewWindow(){
		super("MVC-Test");
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setSize(new Dimension(800,500));
		this.setExtendedState(MAXIMIZED_BOTH);
		this.setLayout(new BorderLayout());
	}
}

Controller für das Fenster

Java:
package de.strimi.mvc.controller;

import de.strimi.mvc.view.ViewNavigation;
import de.strimi.mvc.view.ViewWindow;

public class ControllerWindow {

	private ViewWindow viewWindow;
	private ViewNavigation viewNavigation;
	
	private ControllerNavigation controllerNavigation;
	
	public ControllerWindow(){

		viewWindow = new ViewWindow();
		viewNavigation = new ViewNavigation();
		
		controllerNavigation = new ControllerNavigation();
		controllerNavigation.addListeners();
		
		addPanels();
		
	}
	
	public void showWindow(){
		viewWindow.setVisible(true);
	}
	
	public void addPanels(){
		viewWindow.getContentPane().add(viewNavigation.getPanelNavigation());
	}
	
}

View für die Navigation

Java:
package de.strimi.mvc.view;

import java.awt.FlowLayout;

import javax.swing.JPanel;
import javax.swing.JTree;
import javax.swing.event.TreeSelectionListener;
import javax.swing.tree.DefaultMutableTreeNode;

public class ViewNavigation {

	private JPanel panelNavigation;
	
	private JTree treeNavigation;
	
	private DefaultMutableTreeNode nodeRoot;
	private DefaultMutableTreeNode nodeCustomer;
	private DefaultMutableTreeNode nodeCustomerData;
	
	public ViewNavigation(){
		
		this.initTree();
		
	}
	
	private void initTree(){
		
		this.panelNavigation = new JPanel();
		this.panelNavigation.setLayout(new FlowLayout(FlowLayout.LEFT));
		
		this.nodeRoot = new DefaultMutableTreeNode("MVC");
		this.nodeCustomer = new DefaultMutableTreeNode("Kundenstamm");
		this.nodeCustomerData = new DefaultMutableTreeNode("Kunde anzeigen");
		
		this.nodeCustomer.add(this.nodeCustomerData);
		
		this.nodeRoot.add(this.nodeCustomer);
		
		this.treeNavigation = new JTree(this.nodeRoot);
		
		this.panelNavigation.add(this.treeNavigation);
		
	}
	
	public void setListenerNavigation(TreeSelectionListener tsl){
		this.treeNavigation.addTreeSelectionListener(tsl);
	}
	
	public JPanel getPanelNavigation(){
		return this.panelNavigation;
	}
	
}

Controller für die Navigation

Java:
package de.strimi.mvc.controller;

import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;

import de.strimi.mvc.view.ViewNavigation;

public class ControllerNavigation {

	private ViewNavigation viewNavigation;
	
	public ControllerNavigation(){
	
		viewNavigation = new ViewNavigation();
		
	}
	
	public void addListeners(){
		this.viewNavigation.setListenerNavigation(new ListenerNavigation());
	}
	
	class ListenerNavigation implements TreeSelectionListener{

		@Override
		public void valueChanged(TreeSelectionEvent e) {
			
			System.out.println("Value Changed");
			
		}
		
	}
	
}

Wie gesagt: der View wird richtig angezeigt, aber der Listener für den JTree wird nicht angenommen. Wie muss man die Controller "anmelden" um das Problem zu beheben?

MfG
TB94
 
Zuletzt bearbeitet:

Harry Kane

Top Contributor
In ControllerWindow wird eine Instanz von ViewNavigation erzeugt und die darin enthaltenen JComponents (insbesondere der JTree) angezeigt. In ControllerNavigation wird eine weitere Instanz von ViewNavigation erzeugt, an welche der TreeSelectionListener gehängt wird. Da die JComponents aus der 2. Instanz von ViewNavigation aber nie angezeigt werden, nützt das nix.
Lösungsvorschlag: übergebe in ControllerWindow die ViewNavigation and ControllerNavigation. Dafür musst du nur den Konstruktor von ControllerNavigation etwas verändern.
 

MichaProgs

Aktives Mitglied
Hallo Harry Kane,

danke für deine Antowort. Habe es nun etwas anders gelöst. Ich habe eine allgemeine Controllerklasse erstellt, in der alle Controller angemeldet werden. Diese Controllerklasse wird dann in der Main-Methode aufgerufen. Wenn die allgemeine Controllerklasse aufgerufen wird, durchläuft diese die einzelnen Controller. Die einzelnen Controller rufen wiederum die jeweilige View auf. Somit muss ich anschließen nur noch die Listener hinzufügen und alles läuft.

MfG
TB94
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
F Swing JAVA GUI Übergabe von Werten zwischen mehreren Fenstern/Klassen AWT, Swing, JavaFX & SWT 10
H jar-archive mit mehreren Klassen erstellen AWT, Swing, JavaFX & SWT 3
G Ikonli in Fat-Jar mit mehreren Icon-Packs einbinden AWT, Swing, JavaFX & SWT 5
F Zeile in mehreren Jtables bei Selektion markieren AWT, Swing, JavaFX & SWT 11
K JavaFX Resizing-Problem beim BorderLayout (Center Component) beim Arbeiten mit mehreren FXMLs AWT, Swing, JavaFX & SWT 2
P JavaFx - Progressbar - Füllen mittels mehreren Tasks AWT, Swing, JavaFX & SWT 0
O Basics - Anwendung erstellen mit mehreren Szenen AWT, Swing, JavaFX & SWT 1
N Taschenrechner mit mehreren Rechnungen AWT, Swing, JavaFX & SWT 18
M Swing MVC-Pattern - View mit mehreren Models AWT, Swing, JavaFX & SWT 5
B JavaFX PrinterJob mit mehreren Seiten AWT, Swing, JavaFX & SWT 0
T JavaFX Label mit mehreren Images AWT, Swing, JavaFX & SWT 11
R KeyListener in mehreren Panels AWT, Swing, JavaFX & SWT 5
M Ein Element in mehreren JList selektieren AWT, Swing, JavaFX & SWT 5
W Swing JPanel nur einmal nach mehreren Änderungen neu zeichnen AWT, Swing, JavaFX & SWT 1
S JComboBox mit mehreren Spalten? AWT, Swing, JavaFX & SWT 6
K Swing Keine Reaktion auf Tastatureingaben bei mehreren Buttons??? AWT, Swing, JavaFX & SWT 4
J JavaFX eine Art Tabelle, jedoch mit mehreren Zeilen AWT, Swing, JavaFX & SWT 2
K Swing Klassenstruktur mit mehreren JPanels AWT, Swing, JavaFX & SWT 3
M Applikation mit mehreren Scenes AWT, Swing, JavaFX & SWT 5
A JButton - Klicks zählen auf mehreren Buttons AWT, Swing, JavaFX & SWT 2
J Mit mehreren in Objekten in JFrame printen? AWT, Swing, JavaFX & SWT 8
P Liste mit Icons und mehreren Spalten AWT, Swing, JavaFX & SWT 7
B Swing Formular mit mehreren Elementen - wie die ActionListener-Verarbeitung lösen? AWT, Swing, JavaFX & SWT 2
S Shape erstellen der aus mehreren Elementen besteht..? AWT, Swing, JavaFX & SWT 3
F Tablemodel zu mehreren Tabellen AWT, Swing, JavaFX & SWT 6
T Sichtbarmachen von Objekten auf mehreren JPanels AWT, Swing, JavaFX & SWT 2
DamienX Swing Component auf mehreren Containern AWT, Swing, JavaFX & SWT 2
B Swing JFormattedTextField auf mehreren JPanels in einer JTabbedPane AWT, Swing, JavaFX & SWT 3
M In Jlist auf Änderungen von mehreren JLabels reagieren AWT, Swing, JavaFX & SWT 3
E JTable nach mehreren Spalten sortieren AWT, Swing, JavaFX & SWT 14
B SWT SWT Tree mit mehreren Spalten AWT, Swing, JavaFX & SWT 3
W GUI in mehreren Threads AWT, Swing, JavaFX & SWT 5
J Swing JComboBox mit mehreren Spalten AWT, Swing, JavaFX & SWT 4
T Auf Ende von mehreren Threads warten, ohne den EDT zu blockieren AWT, Swing, JavaFX & SWT 1
J SWING Fenster mit mehreren JPanels (dank JLayeredPane) AWT, Swing, JavaFX & SWT 19
T Swing KeyListener mit mehreren Objekten AWT, Swing, JavaFX & SWT 2
G Verliere Referenz von Toolbar bei mehreren Fenster AWT, Swing, JavaFX & SWT 3
M MVC: Grundidee verstanden aber was machen mit mehreren Model AWT, Swing, JavaFX & SWT 2
R Daten in JTable in mehreren Zeilen darstellen AWT, Swing, JavaFX & SWT 11
G JDialog mit mehreren Elementen! AWT, Swing, JavaFX & SWT 5
G Ein Frame mit mehreren austauschbaren Panels AWT, Swing, JavaFX & SWT 3
S JTable audrucken, aber mit mehreren Footers und Headers AWT, Swing, JavaFX & SWT 2
O Zwischen mehreren Bildern wechseln AWT, Swing, JavaFX & SWT 6
S Enter in JLabel - oder: JTabbedPane mit mehreren JLabel AWT, Swing, JavaFX & SWT 3
I Arbeiten mit mehreren Fenstern AWT, Swing, JavaFX & SWT 4
G Organisation Anwendung mit mehreren Eingabedialogen AWT, Swing, JavaFX & SWT 3
L Probleme mit mehreren Canvas: Überlagerungseffekte? AWT, Swing, JavaFX & SWT 5
N JComboBox mit mehreren Spalten AWT, Swing, JavaFX & SWT 21
Q Auf mehreren JPanels Bilder zeichnen. AWT, Swing, JavaFX & SWT 5
T Swing: MainForm mit mehreren Tabs AWT, Swing, JavaFX & SWT 6
K Spaltenbreite von mehreren Tabellen gleichzeitig verändern AWT, Swing, JavaFX & SWT 3
H JTable Text aus mehreren Zellen in einer Spalte kopieren? AWT, Swing, JavaFX & SWT 3
R Navigieren zwischen mehreren Fenstern AWT, Swing, JavaFX & SWT 7
U Anwendung mit mehreren "Fenstern" AWT, Swing, JavaFX & SWT 4
M JDialog mit mehreren Eingabenfeldern? AWT, Swing, JavaFX & SWT 5
M jtabbedpane mit mehreren layoutmanagern? AWT, Swing, JavaFX & SWT 2
V Werte mehreren Checkboxes zuweisen AWT, Swing, JavaFX & SWT 3
T JList mit mehreren spalten AWT, Swing, JavaFX & SWT 2
M Mit mehreren Panels arbeiten AWT, Swing, JavaFX & SWT 2
A JFrame mit mehreren Panels AWT, Swing, JavaFX & SWT 10
P JTable nach mehreren Spalten sortieren AWT, Swing, JavaFX & SWT 15
V JTable mit mehreren Componenten in einer Spalte ? AWT, Swing, JavaFX & SWT 6
M Dialog mit mehreren Komponenten AWT, Swing, JavaFX & SWT 4
N Checkbox mit mehreren Strings belegen? AWT, Swing, JavaFX & SWT 6
XWing Swing Image anzeigen und probleme mit klassen AWT, Swing, JavaFX & SWT 3
L Kommunikation zwischen Klassen / Konstruktoren bei Swing AWT, Swing, JavaFX & SWT 9
P JavaFX Zugriff auf Fenster/Layout-Container in eigenen Klassen AWT, Swing, JavaFX & SWT 5
Ø Swing Button in anderer Klassen ausführen AWT, Swing, JavaFX & SWT 6
H Swing Frame an andere Klassen weitergeben AWT, Swing, JavaFX & SWT 4
R JavaFX Java FXML Vererbung in Klassen AWT, Swing, JavaFX & SWT 9
K JavaFX Allgemeine Fragen zu dem Aufbau eines Programms hinsichtlich der Klassen AWT, Swing, JavaFX & SWT 1
D Zwei getrennte Java Klassen verbinden. Wie ? AWT, Swing, JavaFX & SWT 2
W JavaFX Mehrere Klassen in ein TableView AWT, Swing, JavaFX & SWT 6
Soloeco Swing JTextField auslesen Klassen übergreifend AWT, Swing, JavaFX & SWT 16
K Wie kann ich eine Variable zwischen Tab Klassen weitergeben ? AWT, Swing, JavaFX & SWT 7
A Oberfläche mit zwei Klassen und actionlistener verbinden AWT, Swing, JavaFX & SWT 7
B Pong Projekt mit LWJGL Klassen exportieren AWT, Swing, JavaFX & SWT 14
M Swing Vorgehen beim Aufruf der Klassen/Methoden AWT, Swing, JavaFX & SWT 7
A Swing Externe Klassen aufrufen und in einem bereits vorhandenen Container einfügen AWT, Swing, JavaFX & SWT 0
D JavaFX @FXML Annotation mit Klassen und Instanzen verbinden? AWT, Swing, JavaFX & SWT 5
S Grafik in einer Klassen einfügen/hinzufügen AWT, Swing, JavaFX & SWT 1
C Thread in Klassen starten AWT, Swing, JavaFX & SWT 4
C Swing Aus verschiedenen Klassen zeichnen. AWT, Swing, JavaFX & SWT 2
M Innere Klassen, ZugriffsProbleme AWT, Swing, JavaFX & SWT 4
V kann ich in einer Klasse stage und scene deklarieren, aber in anderen Klassen Inhalte hinzufügen ? AWT, Swing, JavaFX & SWT 5
A Swing Zwei Klassen mit Textfeld Eingaben vergleichen und Ausgabe erzeugen AWT, Swing, JavaFX & SWT 10
D SWT SWT Elemente aus anderen Klassen aufrufen - Invalid thread access AWT, Swing, JavaFX & SWT 6
M ActionListener für mehrere Klassen AWT, Swing, JavaFX & SWT 4
Z Swing Von vielen Klassen auf ein GUI-Element zugreifen AWT, Swing, JavaFX & SWT 10
C In Hauptfenster Programm-Klassen implementieren AWT, Swing, JavaFX & SWT 9
P Actionlistener - 3 klassen - kompliziert - auf methoden zugreifen AWT, Swing, JavaFX & SWT 3
B 2 Klassen Kommunikation AWT, Swing, JavaFX & SWT 4
P versch. JPanel Klassen über Menü öffnen AWT, Swing, JavaFX & SWT 12
E Swing auf klassen zugreifen AWT, Swing, JavaFX & SWT 2
A Daten umherschieben zwischen zwei Klassen AWT, Swing, JavaFX & SWT 40
H Verschiedene JPanels aus eigenen Klassen in JFrame einfügen, nur ein Panel sichtbar AWT, Swing, JavaFX & SWT 4
Zettelkasten repaint() von anderen Klassen aufrufen AWT, Swing, JavaFX & SWT 4
3 JFrame in Klassen aufrufen AWT, Swing, JavaFX & SWT 2
P Swing Beziehungen zwischen 3 Klassen AWT, Swing, JavaFX & SWT 4
Luk10 repaint() auch in anderen Klassen! AWT, Swing, JavaFX & SWT 6

Ähnliche Java Themen

Neue Themen


Oben