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 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) ;
}
}
} |
Partager