Utiliser le patron Observable en java
Résolu/Fermé
Vincent B
Messages postés
95
Date d'inscription
mardi 9 mars 2004
Statut
Contributeur
Dernière intervention
29 octobre 2009
-
9 sept. 2004 à 09:38
MoiMeme - 7 déc. 2007 à 20:54
MoiMeme - 7 déc. 2007 à 20:54
A voir également:
- Utiliser le patron Observable en java
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel football - Télécharger - Jeux vidéo
- Utiliser chromecast - Guide
- Java apk - Télécharger - Langages
- Waptrick java voiture - Télécharger - Jeux vidéo
2 réponses
Utilisateur anonyme
9 sept. 2004 à 10:47
9 sept. 2004 à 10:47
Voici un exemple des plus simples.
Lance la classe Tester.
Classe Tester
ClasseConcreteModel:
Classe DisplayPanel:
Classe MainView:
Hope it helps
;-)
HackTrack
Lance la classe Tester.
Classe Tester
public class Tester { public Tester() { } public static void main(String[] args) { Tester tester = new Tester(); ConcreteModel model = new ConcreteModel(); DisplayPanel display = new DisplayPanel(); display.setModel(model); MainView mainView = new MainView("Observer/Observable"); mainView.addComponent(display); mainView.pack(); mainView.setVisible(true); } }
ClasseConcreteModel:
import java.util.Date; import java.util.Observable; public class ConcreteModel extends Observable { private Date now; public ConcreteModel() { now = new Date(); } public void fireUpdate() { now = new Date(); setChanged(); notifyObservers(new Date()); } }
Classe DisplayPanel:
import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Date; import java.util.GregorianCalendar; import java.util.Observable; import java.util.Observer; import javax.swing.JButton; import javax.swing.JLabel; import javax.swing.JPanel; public class DisplayPanel extends JPanel implements Observer { private JLabel hour; private ConcreteModel model; public DisplayPanel() { initialize(); } private void initialize() { hour = new JLabel(); JButton jb_getHour = new JButton("Mettre l'heure à jour"); jb_getHour.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { model.fireUpdate(); } }); add(hour); add(jb_getHour); } public void update(Observable o, Object arg) { GregorianCalendar calendar = (GregorianCalendar) GregorianCalendar.getInstance(); calendar.setTime((Date) arg); hour.setText(calendar.get(GregorianCalendar.HOUR) + ":" + calendar.get(GregorianCalendar.MINUTE)+":"+calendar.get(GregorianCalendar.SECOND)); hour.validate(); } public void setModel(Observable model) { this.model = (ConcreteModel) model; model.addObserver(this); model.notifyObservers(); } }
Classe MainView:
import java.awt.Component; import java.awt.Container; import javax.swing.JFrame; public class MainView extends JFrame { private Container c; public MainView(String name){ super(name); setDefaultCloseOperation(EXIT_ON_CLOSE); c = getContentPane(); } public void addComponent(Component comp){ c.add(comp); } }
Hope it helps
;-)
HackTrack
10 sept. 2004 à 13:56
Merci pour ta réponse, je viens seulement de lire ton message, mais c'est exactement ce que je voulais, je ne devrais pas avoir de problème pour l'éxécuter, le tester et l'appliquer à ce que je veux faire.
Merci pour tout,
Amicalement,
Vincent B
Patience et persévérance, la réussite est au bout