IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

[RMI] Boutons et Timer


Sujet :

Langage Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2010
    Messages : 18
    Points : 18
    Points
    18
    Par défaut [RMI] Boutons et Timer
    Bonjour,

    Je réalise une application qui permet de gérer un carrefour au travers d'une interface client / serveur en RMI.

    J'ai suivi les différents tutoriaux proposé par le site et vu dans le cadre de mes cours et l'application originale tourne finalement sur le client.

    J'ai cependant quelques bugs que je ne comprend pas, du à la "rmisation" de mon code.

    1) Le timer.

    J'ai une classe Carrefour, implémentant CarrefourModele. Dans celle-ci, j'ai un timer qui est lancé via CarrefourModele lors du lancement de l'application client. Hors lorsque je fais un modele.getTimer().start(), celui-ci ne bouge pas du tout. Une idée ?

    Voici les 3 classes, j'ai essayer de retirer ce qui n'était pas essentiel.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
     
    public class Carrefour extends UnicastRemoteObject implements CarrefourModele {
     
        private ArrayList<CarrefourModeleVue> vues;
        private Etat etat;
        private Timer timerFeu;
        private Timer timerPieton;
        private ActionListener incrementeurVehicule;
        private ActionListener incrementeurPieton;
        private int chg;
        private int clignotant;
        private int estSimOeP;
     
        public Carrefour() throws FileNotFoundException, IOException {
            vues = new ArrayList<CarrefourModeleVue>();
            etat = new Etat();
     
            incrementeurVehicule = new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent evt) {
                    try {
                        cycleVehicule();
                    } catch (RemoteException ex) {
                        Logger.getLogger(Carrefour.class.getName()).log(Level.SEVERE, null, ex);
                    }
                }
            };
     
            incrementeurPieton = new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent evt) {
                    try {
                        cyclePieton();
                    } catch (RemoteException ex) {
                        Logger.getLogger(Carrefour.class.getName()).log(Level.SEVERE, null, ex);
                    }
                }
            };
            etat.setNs(CouleurFeu.OFF);
            etat.setOe(CouleurFeu.OFF);
            etat.setNsP(CouleurFeu.OFF);
            etat.setOeP(CouleurFeu.OFF);
     
            timerFeu = new Timer(1, incrementeurVehicule);
            timerPieton = new Timer(1, incrementeurPieton);
            chg = 0;
            estSimOeP = 0;
            timerFeu.setDelay(1000);
            timerPieton.setDelay(1000);
     
        }
     
        @Override
        public void cycleVehicule() throws RemoteException {
            ...
            fire();
        }
     
     
        public void cyclePieton() throws RemoteException {
     
    ...
     
      fire();
        }
        @Override
        public Timer getTimerFeu() {
            return timerFeu;
        }
     
        @Override
        public Timer getTimerPieton() {
            return timerPieton;
        }
     
     
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    public interface CarrefourModele extends Remote {
     
        public Timer getTimerFeu() throws RemoteException;
     
        public Timer getTimerPieton() throws RemoteException;
     
          ...
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    public Principale() {
            initComponents();
            ConfigurationPanel configurationPanel1 = null;
            try {
                configurationPanel1 = new ConfigurationPanel();
                mod = RMIConnexion.getConnexion("carrefour");
                System.out.println(mod.getEtat().getNsOrange());
                configurationPanel1.setModele(mod);
                this.add(configurationPanel1);
                this.setLayout(new FlowLayout());
                mod.getTimerFeu().start();
                mod.getTimerPieton().start();    
                pack();
            } catch (FileNotFoundException ex) {
                Logger.getLogger(Principale.class.getName()).log(Level.SEVERE, null, ex);
            } catch (IOException ex) {
                Logger.getLogger(Principale.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    2) Les boutons.

    Autre problème, ce sont mes boutons. Lorsque rien n'était rmiser, j'avais une classe qui permettait de changer les paramètres du feu via des sliders. Tout se synchronisait parfaitement : si j'augmentait via le slider le temps du orange, celui-ci augmentait la variable etatOrange directement. Or ici, aucun bouton ne répond.
    Plus précisement, lorsque je récupère mon modèle via le réseau, je peux lire les variables qu'il contenait. Par contre, si j'essaye de les changer, il ne les prend pas en compte. Une idée ?


    Voila, j'ai encore d'autres bugs via rmi, mais je pense que je vais m'arrêter là, la plupart d'entre eux étant lier au fait que comme dit précédemment, j'arrive à récupérer le modèle, mais que les changements fait sur celui-ci ne sont pas pris en compte ...

    Un grand merci à vous, ne fusque pour la lecture.

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2010
    Messages : 18
    Points : 18
    Points
    18
    Par défaut
    Après une petite semaine, j'ai trouvé la réponse, même si je pense que cela n’intéressera personne.

    La méthode est bancale, mais elle fonctionne. Il suffit de passer toutes les méthodes de Etat dans le modèle. On peut comme cela accéder directement aux méthodes.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 25/03/2013, 11h33
  2. [Débutant] Fermeture Forms par bouton et par timer
    Par jujutix dans le forum Windows Forms
    Réponses: 3
    Dernier message: 20/11/2012, 15h19
  3. Un bouton start/stop sur un timer
    Par Ladgalen dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 18/02/2009, 11h08
  4. Réponses: 10
    Dernier message: 07/06/2007, 10h48
  5. [c#][VSN2003] timer avec bouton
    Par shinkyo dans le forum Windows Forms
    Réponses: 5
    Dernier message: 24/04/2006, 22h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo