Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
976 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  problème avec l'utilisation d'un StateEdit

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

problème avec l'utilisation d'un StateEdit

n°1524805
Amonchakai
Posté le 06-03-2007 à 20:04:46  profilanswer
 

Bonjour,
    J'ai un petit soucis avec un petit exercice que je me suis posé : je cherche a apprendre a utiliser les fonctions undo() et redo() de Swing. Donc d'après la doc de Sun. je suis arrivé a ça :
 

Code :
  1. import javax.swing.*;
  2. import javax.swing.undo.*;
  3. import java.awt.event.*;
  4. import java.awt.*;
  5. public class Form extends JFrame
  6. {
  7.     JButton bouton, bouton2;
  8.     Test t;
  9.     StateEdit s;
  10.     public Form()
  11.     {
  12.         super("hello World" );
  13.         setSize(400, 300);
  14.         t=new Test();
  15.         s = new StateEdit(t);
  16.         getContentPane().setLayout(new BorderLayout());
  17.         bouton = new JButton(new ActivationAction(t,s));
  18.         bouton2 = new JButton(new ActivationAction2(t,s));
  19.         getContentPane().add(BorderLayout.NORTH, bouton);
  20.         getContentPane().add(BorderLayout.SOUTH, bouton2);
  21.         setVisible(true);
  22.     }
  23.     public class ActivationAction extends AbstractAction
  24.     {
  25.         Test t;
  26.         StateEdit s;
  27.         ActivationAction(Test t, StateEdit s)
  28.         {
  29.             super("Do" );
  30.             this.t = t;
  31.             this.s = s;
  32.         }
  33.         public void actionPerformed(ActionEvent e)
  34.         {
  35.             t.setX(t.getX()+1);
  36.             System.out.println("x : "+t.getX());
  37.             s.end();
  38.         }
  39.     }
  40.     public class ActivationAction2 extends AbstractAction
  41.     {
  42.         Test t;
  43.         StateEdit s;
  44.         ActivationAction2(Test t, StateEdit s)
  45.         {
  46.             super("undo" );
  47.             this.s = s;
  48.             this.t = t;
  49.         }
  50.         public void actionPerformed(ActionEvent e)
  51.         {
  52.             s.undo();
  53.             System.out.println("x : "+t.getX());
  54.         }
  55.     }
  56.     public class Test implements StateEditable
  57.     {
  58.        private int x;
  59.        public void setX(int x)
  60.        {
  61.            this.x = x;
  62.        }
  63.        public int getX()
  64.        {
  65.            return x;
  66.        }
  67.        public void storeState(java.util.Hashtable h)
  68.        {
  69.            h.put("x", new Integer(x));
  70.        }
  71.        public void restoreState(java.util.Hashtable h)
  72.        {
  73.            Integer i;
  74.            if((i = (Integer)h.get("x" ))!=null)
  75.                x= i.intValue();
  76.        }
  77.     }
  78.     public static void main(String[] args)
  79.     {
  80.         Form f = new Form();
  81.     }
  82. }


et la ça marche pas comme je le pensais : quand je presse le bouton "do", ça s'incrémente, la ok... mais quand je clicke sur undo, ça revien au cas initial et non le précédent... Donc il n'a pas l'air de conserver mes modifications. Pourtant j'appelle bien la méthode end() du stateEdit donc je pensais que ça suffisait... :/  
 
Si vous avez une idée de ce que je n'ai pas fait, je serai content de comprendre pourquoi ça marche pas.  
 
Merci :)

mood
Publicité
Posté le 06-03-2007 à 20:04:46  profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  problème avec l'utilisation d'un StateEdit

 

Sujets relatifs
Probleme simple ?[C#-PDA] Problème avec le tabcontrol
probleme appendChild et IEProblème de format sur le graphique Access sous Windows XP
>>>survol d'un texte avec la souris<<<[Java] Problème (simple ??!) d'ArrayList
problème de compilation sous eclipse[PHP] problème lecture / écriture dans un fichier
Utilisation de Office Web Component (OWC) [auto-résolu][sql] probleme requete sql.
Plus de sujets relatifs à : problème avec l'utilisation d'un StateEdit


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR