| 12
 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
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
 100
 101
 102
 103
 104
 105
 106
 107
 108
 109
 110
 111
 112
 113
 114
 115
 116
 117
 118
 119
 120
 121
 122
 123
 124
 125
 126
 127
 128
 129
 130
 131
 132
 133
 134
 135
 136
 137
 138
 139
 140
 141
 142
 143
 144
 145
 146
 147
 148
 149
 150
 151
 152
 153
 154
 155
 156
 157
 158
 159
 160
 161
 162
 163
 164
 165
 
 | import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import javax.swing.*;
public class Vue extends JFrame 
{
	//le serialVersionUID permet d'affecter un numéro de version à la classe
	private static final long serialVersionUID = 1L;
	
	Modele modele ;				//modele contenant les données
	JLabel label ;					//etiquette d'affichage
	final static String[] CHIFFRES = { "0", "1", " 2 " ,"3" , "4","5" , "6" , "7" ,"8", "9"} ; 
	final String[] operateur = {"+","-","*","/","="," clear "} ;
	
	//constructeurs
	public Vue(Modele modele,Controleur controleur)
	{
		//initialisation du modele
		this.modele = modele ;
		
		//Creation du champ d'affichage de la valeur
		label = new JLabel(Integer.toString(controleur.getValue()),JLabel.CENTER) ;
		
		//création des boutons écoutes par le controleur
		//JButton plusButton = new IncrButton("+", +1) ;
		//plusButton.addActionListener(controleur) ;
		
		/*--------------------------------------------------------------------------------------------------
		 * construction de l'interface graphique
		----------------------------------------------------------------------------------------------------*/
		/*=======gestionnaire de positionnement de mon interface=================================================================*/
		//this.setLayout(new FlowLayout(FlowLayout.LEFT));
		
		this.setLayout(new FlowLayout()) ;
		
		
		
		/*=======================================================
		 *   affichage de ma barre de menus
		 *=======================================================*/
		JMenuBar barreMenu = new JMenuBar() ;
		
		//this.setJMenuBar(barreMenu) ;
		// ne pas oublier le this
	    this.add(barreMenu) ;
		
		JMenu menu = new JMenu("Menu            	") ;
		menu.setMnemonic(KeyEvent.VK_M) ;
		barreMenu.add(menu) ;  
	    
		JMenu edition = new JMenu("Edition") ;
		menu.setMnemonic(KeyEvent.VK_M) ;
		barreMenu.add(edition) ;
		
		//1)Rajouter un menu avec un bouton quitter et une touche de raccourci---fait cf pour la taille du menu?
		JMenuItem quitter = new JMenuItem("quitter",KeyEvent.VK_1) ;
		menu.add(quitter) ;
		
		//portion de code qui dynamise mon boutton quitter via la classe EcouteurQuitter
		ActionEvent event = null ; 
		
		Controleur controleur1 = new Controleur(modele) ;
		controleur.actionPerfomed(event) ;
		//quitter.addActionListener(new Controleur()) ;
		
		/* Tu récupères le masque du raccourci clavier qui correspond à la touche qu'on maintient enfoncée avant 
		 * de taper la lettre "Q". Plutôt que de coder en dur la touche Contrôle, tu récupéres cette information au 
		 * moment de l'exécution. La méthode statique getDefaultToolkit() du Toolkit te donnes un accès au 
		 * toolkit AWT (Ensemble d'outils abstraits de gestion des fenêtres) courant. Sur Windows, 
		 * il retourne le masque de la touche Contrôle. Normalement,
		*Code :
		*int toucheRaccourcis = java.awt.Toolkit.getDefaultToolkit().getMenuShortcutKeyMask() ; est ok
         */
		int toucheRaccourcis = java.awt.Toolkit.getDefaultToolkit().getDefaultToolkit().getMenuShortcutKeyMask() ;
		
		//ce type de raccourci active la combinaison suivante ctrl n ---> VK_N
		//quitter.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,toucheRaccourcis)) ;
		
		//ce type de raccourci active la combinaison suivante ctrl q ---> VK_Q  le q
		quitter.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Q,toucheRaccourcis)) ;
		
		/*=================================================================  
		 * section de code qui s'ocupper d'afficher mon champ interactif
		 * ================================================================*/
		 
		//instanciation
		JTextField champInteractif = new JTextField("  ",10) ;
		
		//GridLayout grid = new GridLayout(3,3) ;
		
		//this.setLayout(grid) ;
		add(champInteractif) ;
		
		/*========================================================================
		 * section de code qui va s'occuper d'afficher mon pave de chiffres
		 * 
		 * ========================================================================*/
		JButton  tabChiffres = null ; 
	      
		//GridLayout gridLa = new GridLayout(4,3) ;
		//this.setLayout(grid) ;  
		
		for (int i=0; i<CHIFFRES.length; i++)
        {
			tabChiffres =new JButton(CHIFFRES[i]);
			add(tabChiffres);
        }          
		
		/*============================================================
		 * section de code qui va s'occuper d'afficher mon panneau d'operateurs
		 *============================================================ 
		 * */
		//GridLayout gridL = new GridLayout(3,2,2,2) ;
        
        //c'est à this dc à l'objet courant qui etend le JPanel à qui il faut appliquer le SetLayout --this
        //this.setLayout(grid) ;
        
        JButton tabOperateurs;         
        for (int i=0;i<operateur.length; i++)
        {
           tabOperateurs =new JButton(operateur[i]);
           add(tabOperateurs);
        }          
		
	}
	
	//Mise a jour de l'affichage a partir des donnees du modele
	void update(int val)
	{
		label.setText(Integer.toString(val)) ;
		
	}
	public void actionPerformed(ActionEvent e) 
	{
		//création d'une fenetre de dialogue pour quitter réellement l'application
		JFrame fenetreDialogue = new JFrame("  ") ;
		int i = JOptionPane.showConfirmDialog(fenetreDialogue, "Voulez vous vraiment quitter l'application ?", "Calculatrice ", JOptionPane.YES_NO_OPTION);
		
		fenetreDialogue.setSize(200,100) ;
		
		fenetreDialogue.setVisible(true) ;
		
		//pr faire des des choix d'apres ma boite de dialogue il faut to use l'arg de sortie de la fonction  showConfirmDialog le mettre à 0 si on utilise le bouton oui
		// 1 sinon
		if ( i == 0)
		{
			System.exit(0) ;
			//fenetreDialogue.setVisible(false) ;
		}
		else
		{
			fenetreDialogue.setVisible(false) ;
			//System.exit(0) ;
		}
		
	}
} |