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
Controller für das Fenster
View für die Navigation
Controller für die Navigation
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
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: