2014-05-24 4 views
0

J'essaie de comprendre le modèle de conception MVC en utilisant Swing dans Java, c'est assez déroutant pour le moment parce que je ne comprends pas tout à fait. J'ai essayé de faire ce que je comprends de lui dans l'éclipse mais j'ai une erreur sur la ligne 68, je ne sais pas pourquoi chaque fois que j'appuie sur un bouton, je reçois beaucoup d'erreurs et non la valeur incrémentée du compteur. MerciApprendre le modèle de conception MVC

public class Model 
{ 
    int counter = 0; 

    int counter() 
    { 
     this.counter++; 
     return this.counter; 
    } 

} 

################################################################################# 
public class Controller 
{ 
    Model mRef; 
    View vRef; 

    public Controller(Model m, View v) 
    { 
     this.mRef = m; 
     this.vRef = v; 
    } 

    int inc() 
    { 
     mRef = new Model(); 
     return mRef.counter(); 
    } 

} 
###################################################################################### 
import java.awt.GridBagConstraints; 
import java.awt.GridBagLayout; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 

import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JPanel; 
@SuppressWarnings("serial") 
public class View extends JFrame 
{ 
    JPanel jp; 
    JButton jb1; 
    JLabel jl1; 
    GridBagConstraints c; 
    Controller con; 
    public View() 
    {  
     c = new GridBagConstraints(); 
     jp = new JPanel(); 
     jb1 = new JButton("First"); 
     jl1 = new JLabel("Label"); 
     jp.setLayout(new GridBagLayout());  
     add(jp);  

     c.gridx = 0; 
     c.gridy = 0; 
     jp.add(jb1, c); 

     jb1.addActionListener(new ActionListener() 
     { 
      public void actionPerformed(ActionEvent e) 
      { 
       System.out.println(con.inc()); 
      } 
     }); 
     c.gridx = 0; 
     c.gridy = 2; 
     jp.add(jl1, c); 

     setVisible(true); 
     pack(); 
    } 
} 
+1

con est nul lorsque votre méthode actionPerformed est appelée, cependant, votre point de vue devrait parler au modèle, le contrôleur doit enregistrerons intérêt pour le bouton et gestion de l'événement actionPerforned. Attention, Swing ne met pas en application stricte MVC, c'est plus comme M (VC) – MadProgrammer

+0

Plus sur le sujet peut être trouvé [ici] (http://stackoverflow.com/a/3072979/230513). – trashgod

Répondre

0

Je recommande d'envisager d'utiliser JavaFX, est plus simple et plus jolie que Swing. Il vous fournit ce que l'on appelle un Scene Builder, où vous pouvez facilement faire glisser et déposer des contrôles à votre interface utilisateur.

Dans le lien suivant, vous pouvez installer Scene Builder sous Ressources supplémentaires.

http://www.oracle.com/technetwork/java/javase/downloads/index.html