France Hardware : Forums de discussion - Découvrez notre nouveau comparateur d'offres Internet
Retrouvez les prix près de chez vous :  
Index du forum | Liste des membres | Liste des groupes | Inscription | F-A-Q | Recherche
Pseudo :    Password :     
29 521 membres enregistrés - 2 069 419 posts - 122 057 topics
Index des forums FH  | Index des forums DegroupNews
      Programmation
           Langages
                Fenetre, comparaison et resultat.... besoin d'aide
84 connectés(record : 2799 le 29 May 2016 - 15 h 34)

Vous devez vous connecter pour répondre au topic.
Fenetre, comparaison et resultat.... besoin d'aide

machintruc
Coordinateur
In Tartiflette we trust

Messages : 805
Inscrit le 24/05/05
Non connecté
  Posté le 04 January 2008 - 01 h 26 m 29 s
Bonjour,
J'aurai besoin d'aide pour faire un code en java.
Je suis débutant et je dois faire cela le plus rapidement possible.
Si quelqu'un pouvait m'orienter ou directement me montrer le code ce serait vraiement sympa.

Voici mon besoin:

une premiere fenetre se lance dans laquelle il y aurait:
- la phrase suivante: entrer un chiffre.
- une boite d'édition dans laquelle on entrerait le chiffre.
- un bouton ok

Le but est d'entrer le chiffre, de cliquer sur ok.
Un traitement comparerai le chiffre entré à 1.

Si le chiffre est egal à 1, une nouvelle fenetre apparait à la place de la 1ere fenetre et le message "c'est le bon chiffre" apparait.

Si le chiffre est different de 1, une nouvelle fenetre apparait à la place de la 1ere fenetre et le message "c'est le mauvais chiffre" apparait.

D'avance merci.




gege38
- Ancien Modérateur -
Chief of the
(¯`·.__[T3aM.BouL3T©]__.·´¯)
Potatoe Reloaded

Messages : 14 114
Inscrit le 05/02/03
Ville : Domène
Non connecté
  Posté le 04 January 2008 - 17 h 58 m 41 s
Ca fait trèèèèès longtemps que j'ai plus retouché à Java, mais déjà, pour tout ce qui touche à l'API Swing et plus généralement au Java graphique, il est plus que recommandé d'utiliser un IDE type Eclipse ou Netbeans pour gagner du temps et éviter les erreurs bêtes.

Mon conseil de rédaction :
- une classe générale contenant le code du main
- une classe s'occupant de l'aspect graphique
- une classe disposant de getters et setters et s'occupant du code métier (ie. comparer le chiffre donné par le setter à 1)

Ensuite, pour commencer, fais ta classe métier du genre :

    Code java    
 1. public class codeMetier {
 2. 
 3. private int value;
 4. 
 5. public void codeMetier(void) {
 6. this.value = 0;
 7. }
 8. public int getValue(void) {
 9. return value;
10. }
11. 
12. public void setValue(int val) {
13. this.value = val;
14. }
15. 
16. public boolean testValue(void) {
17. return (this.value == 1);
18. }
19. }


Avec Eclipse, grâce à l'outil Source, cette classe se fait en 5 min.

Ensuite, dans le main, tu déclares un new codeMetier(), puis tu lances la future GUI.

Et enfin, dans la classe GUI, tu laisses l'IDE te créer tes boites et sur le bouton 'OK', tu lies l'évenement à l'appel de la fonction testValue().

'Tention, j'ai plus pissé de Java depuis 2 ans, je suis rouillé, mais si probleme, je peux essayer de regarder ça (coder ça devrait me prendre 30 min à tout péter).


Message édité 2 fois, la dernière par gege38 le 04 January 2008 - 18 h 01.

" Nous plaisons plus souvent dans le commerce de la vie par nos défauts que par nos qualités. "
--La Rochefoucauld


machintruc
Coordinateur
In Tartiflette we trust

Messages : 805
Inscrit le 24/05/05
Non connecté
  Posté le 05 January 2008 - 00 h 19 m 06 s
Merci pour ta réponse.

Pour l'instant le main et l'affichage ça fonctionne (je developpe sous Eclipse).
Les tests sont ok, j'ai juste des petits soucis: genre comment positionner mon texte et mon bouton.

J'en suis pas encore à comparer une donnée récuperer depuis une boite d'édition.

En gros ça donne ça:

Pour l'affichage:


import java.awt.FlowLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JButton;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class Fenetre extends JFrame implements ActionListener
{

public Fenetre()
{
super();
build();
}

private void build()
{
setTitle("titre fenêtre");
setSize(500,500);
setLocationRelativeTo(null);
setResizable(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setContentPane(buildContentPane());
}
private JPanel buildContentPane()
{
JPanel panel = new JPanel();
panel.setLayout(new FlowLayout());
JLabel label1 = new JLabel("Titre de la fenêtre");
panel.add(label1);
panel.setLayout(new FlowLayout());
JButton bouton1 = new JButton("valider");
bouton1.addActionListener(this);
panel.add(bouton1);
return panel;
}

public void actionPerformed(ActionEvent e)
{
lancer la fenetre suivante si clic sur le bouton et si condition ok;
}
}


Pour le main:


import javax.swing.SwingUtilities;

public class Principal
{
public static void main(String[] args)
{
SwingUtilities.invokeLater
(new Runnable()
{
public void run()
{
Fenetre fenetre = new Fenetre();
fenetre.setVisible(true);
}
}
);
}
}




gege38
- Ancien Modérateur -
Chief of the
(¯`·.__[T3aM.BouL3T©]__.·´¯)
Potatoe Reloaded

Messages : 14 114
Inscrit le 05/02/03
Ville : Domène
Non connecté
  Posté le 05 January 2008 - 00 h 29 m 04 s
Si tu es sous Eclipse, je te conseilles le plugin VisualEditor, carrément incontournable pour faire une GUI en 5 min avec les listeners associés...

Bon, j'ai fait ton appli, ca m'a fait marrer, et surtout ça m'a redonné envie de me remettre au Java :D
C'est loin d'être le code le plus propre de ma vie, mais si ca peut t'aider :)

Et pour info, ca m'a pris 1h30 (je suis rouillé :hot:)

Le code en JAR : http://sbauza.free.fr/comparo.jar (sources incluses dans le jar)

Lancement via 'java -jar comparo.jar'

    Code     
 1. public class Comparo {
 2. 
 3. 	/**
 4. 	 * @param args
 5. 	 */
 6. 	public static void main(String[] args) {
 7. 
 8. 		//on lance le code métier avec l'entier de référence
 9. 		ComparoMetier comparo = new ComparoMetier(1);
10. 		//on lance la GUI et on passe l'instance du code métier
11. 		new ComparoSwing(comparo);
12. 		
13. 	}
14. 
15. }
    Code     
 1. public class ComparoMetier {
 2. 
 3. 	private int value;
 4. 
 5. 	public ComparoMetier(int value) {
 6. 		super();
 7. 		this.value = value;
 8. 	}
 9. 
10. 	public int getValue() {
11. 		return value;
12. 	}
13. 
14. 	public void setValue(int value) {
15. 		this.value = value;
16. 	}
17. 		
18. 	//Méthode métier appelée par le bouton 
19. 	public boolean testValue(int val) {
20. 		return (val == this.value);
21. 	}
22. 	
23. }
    Code     
  1. import javax.swing.JFrame;
  2. import javax.swing.JPanel;
  3. import java.awt.Dimension;
  4. import javax.swing.JLabel;
  5. import javax.swing.JTextField;
  6. import java.awt.Rectangle;
  7. import javax.swing.JButton;
  8. import javax.swing.JOptionPane;
  9. 
 10. 
 11. /**
 12.  * @author toto
 13.  *
 14.  * 'Tention hein, c'est du bon gros code crade généré par Eclipse...
 15.  */
 16. public class ComparoSwing {
 17. 
 18. 	ComparoMetier cm;
 19. 	
 20. 	/* Constructeur
 21. 	 * 
 22. 	 * On récupère l'instance métier, et on initialise la GUI
 23. 	 */
 24. 	public ComparoSwing(ComparoMetier cm) {
 25. 		super();
 26. 		this.cm = cm;
 27. 		getJFrame();
 28. 		getJOptionPane();
 29. 
 30. 	}
 31. 
 32. 	private JFrame jFrame = null;  //  @jve:decl-index=0:visual-constraint="224,51"
 33. 	private JPanel jContentPane = null;
 34. 	private JLabel jLabel = null;
 35. 	private JTextField jTextField = null;
 36. 	private JButton jButton = null;
 37. 	private JOptionPane jOptionPane = null;  //  @jve:decl-index=0:visual-constraint="629,94"
 38. 
 39. 
 40. 	/**
 41. 	 * This method initializes jFrame	
 42. 	 * 	
 43. 	 * @return javax.swing.JFrame	
 44. 	 */
 45. 	private JFrame getJFrame() {
 46. 		if (jFrame == null) {
 47. 			jFrame = new JFrame();
 48. 			jFrame.setSize(new Dimension(332, 199));
 49. 			jFrame.setTitle("Comparo");
 50. 			jFrame.setContentPane(getJContentPane());
 51. 			jFrame.setVisible(true);
 52. 			
 53. 			// ActionItem pour terminer le process en cliquant sur "fermeture"
 54. 			jFrame.addWindowListener(new java.awt.event.WindowAdapter() {
 55. 				public void windowClosing(java.awt.event.WindowEvent e) {
 56. 					System.exit(0);
 57. 				}
 58. 			});
 59. 		}
 60. 		return jFrame;
 61. 	}
 62. 
 63. 	/**
 64. 	 * This method initializes jContentPane	
 65. 	 * 	
 66. 	 * @return javax.swing.JPanel	
 67. 	 */
 68. 	private JPanel getJContentPane() {
 69. 		if (jContentPane == null) {
 70. 			jLabel = new JLabel();
 71. 			jLabel.setText("Entrer un chiffre :");
 72. 			jLabel.setBounds(new Rectangle(27, 43, 115, 17));
 73. 			jContentPane = new JPanel();
 74. 			jContentPane.setLayout(null);
 75. 			jContentPane.add(getJTextField(), null);
 76. 			jContentPane.add(jLabel, null);
 77. 			jContentPane.add(getJButton(), null);
 78. 		}
 79. 		return jContentPane;
 80. 	}
 81. 
 82. 	/**
 83. 	 * This method initializes jTextField	
 84. 	 * 	
 85. 	 * @return javax.swing.JTextField	
 86. 	 */
 87. 	private JTextField getJTextField() {
 88. 		if (jTextField == null) {
 89. 			jTextField = new JTextField();
 90. 			jTextField.setBounds(new Rectangle(144, 42, 56, 19));
 91. 		}
 92. 		return jTextField;
 93. 	}
 94. 
 95. 	/**
 96. 	 * This method initializes jButton	
 97. 	 * 	
 98. 	 * @return javax.swing.JButton	
 99. 	 */
100. 	private JButton getJButton() {
101. 		if (jButton == null) {
102. 			jButton = new JButton();
103. 			jButton.setBounds(new Rectangle(213, 39, 71, 31));
104. 			jButton.setText("OK");
105. 			
106. 			//ActionItem qui actionne le code métier sur clic et ouvre les boites 
107. 			// suivant le résultat donné par le test métier.
108. 			jButton.addActionListener(new java.awt.event.ActionListener() {
109. 				public void actionPerformed(java.awt.event.ActionEvent e) {
110. 					try {
111. 						if (cm.testValue(new Integer(jTextField.getText()).intValue()) == false) {
112. 
113. 							JOptionPane.showMessageDialog(jOptionPane, "c'est le mauvais chiffre");
114. 						} 
115. 						else if (cm.testValue(new Integer(jTextField.getText()).intValue()) == true) {
116. 							JOptionPane.showMessageDialog(jOptionPane, "c'est le bon chiffre");
117. 						}
118. 					} catch (NumberFormatException nfe) {
119. 						JOptionPane.showMessageDialog(jOptionPane, "Erreur: Veuillez entrer un chiffre");
120. 					}
121. 					getJTextField().setText("");
122. 
123. 
124. 				}
125. 			});
126. 		}
127. 		return jButton;
128. 	}
129. 
130. 	/**
131. 	 * This method initializes jOptionPane	
132. 	 * 	
133. 	 * @return javax.swing.JOptionPane	
134. 	 */
135. 	private JOptionPane getJOptionPane() {
136. 		if (jOptionPane == null) {
137. 			jOptionPane = new JOptionPane();
138. 		}
139. 		return jOptionPane;
140. 	}
141. 
142. }


Message édité 2 fois, la dernière par gege38 le 24 January 2008 - 21 h 38.

" Nous plaisons plus souvent dans le commerce de la vie par nos défauts que par nos qualités. "
--La Rochefoucauld


gege38
- Ancien Modérateur -
Chief of the
(¯`·.__[T3aM.BouL3T©]__.·´¯)
Potatoe Reloaded

Messages : 14 114
Inscrit le 05/02/03
Ville : Domène
Non connecté
  Posté le 05 January 2008 - 00 h 30 m 53 s
Ah, au fait, je prends toujours l'habitude de faire mon code métier *avant* la GUI. Simple réflexe, car je pars du principe qu'une GUI ne doit être qu'une surcouche, adaptable, facilement changeable ou enlevable, sans forcément devoir la réécrire...
Et du coup, c'est vachement plus facile à écrire :)



" Nous plaisons plus souvent dans le commerce de la vie par nos défauts que par nos qualités. "
--La Rochefoucauld


machintruc
Coordinateur
In Tartiflette we trust

Messages : 805
Inscrit le 24/05/05
Non connecté
  Posté le 05 January 2008 - 20 h 40 m 43 s
Merci beaucoup pour ton aide.
J'etais en train de me prendre la tête avec la recuperation de la donnée entrée dans le champ texte.

Avec ce que tu m'a donné je vais moins galerer avec 2/3 trucs et pouvoir avancer dans mon projet.

...Le dev c'est vraiment pas ma tasse de thé :-)
j't'embrasse pas mais le coeur y est, c'est sympa d'avoir pris de ton temps pour ça


Message édité 1 fois, la dernière par machintruc le 05 January 2008 - 20 h 49.


gege38
- Ancien Modérateur -
Chief of the
(¯`·.__[T3aM.BouL3T©]__.·´¯)
Potatoe Reloaded

Messages : 14 114
Inscrit le 05/02/03
Ville : Domène
Non connecté
  Posté le 06 January 2008 - 12 h 16 m 50 s
Tu as compris le principe des ActionListener ?
Je le répète, je ne sais pas sur quel IDE tu dév, mais avec Eclipse et VisualEditor, avec un clic sur le bouton ou le Bean désiré, tu vois les actions possibles, et ca te génère la méthode appropriée...



" Nous plaisons plus souvent dans le commerce de la vie par nos défauts que par nos qualités. "
--La Rochefoucauld


machintruc
Coordinateur
In Tartiflette we trust

Messages : 805
Inscrit le 24/05/05
Non connecté
  Posté le 06 January 2008 - 23 h 22 m 26 s
J'ai compris pour les actionlistener, maintenant ça marche.

Pour l'environnement de dev je suis sous Eclipse (V 3.3.1).
Je ne connaissais pas Visual editor. Je l'ai telecharger sur leur site (avec gem et jem) mais j'ai pas encore installé les plugins... faut que je regarde ça sur le net.




gege38
- Ancien Modérateur -
Chief of the
(¯`·.__[T3aM.BouL3T©]__.·´¯)
Potatoe Reloaded

Messages : 14 114
Inscrit le 05/02/03
Ville : Domène
Non connecté
  Posté le 07 January 2008 - 12 h 16 m 13 s


Le 06 janvier 2008 - 23 h 22, machintruc a écrit :
Pour l'environnement de dev je suis sous Eclipse (V 3.3.1).
Je ne connaissais pas Visual editor. Je l'ai telecharger sur leur site (avec gem et jem) mais j'ai pas encore installé les plugins... faut que je regarde ça sur le net.


Tu as plus simple que de télécharger sur le Net :
Help/Software Updates/Find and Install puis "Search for new features to install", et ensuite, tu devrais trouver Visual Editor...
Pour créer une GUI, il faut ouvrir une "Visual Class". Attention, à chaque nouvel élement, ca va mettre à jour l'appli visuelle, mais avec aucune action possible (juste pour voir le positionnement). Pour tester l'appli, il faudra évidemment cliquer sur "Run".



" Nous plaisons plus souvent dans le commerce de la vie par nos défauts que par nos qualités. "
--La Rochefoucauld


raph707


Messages : 2
Inscrit le 26/03/08
Ville : Metz
Non connecté
  Posté le 26 March 2008 - 19 h 50 m 59 s
!




Page genérée en 0.3324 secondes par RahForum 2.0 | Gzip off |  Stats |  Metaforums |  RSS
© 2004 Cerbere Systems.
Prix Matériel Informatique | Informatique Lyon | Informatique Grenoble | Informatique Annecy | Informatique Marseille | Informatique Bordeaux | Forum Informatique
ADSL | Actualité ADSL | Deligo | Appareil photo | Commande Au Volant
Creative Commons
Message Boards and Forums Directory