Interface graphique java

Fermé
siba Messages postés 35 Date d'inscription jeudi 29 novembre 2007 Statut Membre Dernière intervention 19 mars 2008 - 7 déc. 2007 à 17:12
siba Messages postés 35 Date d'inscription jeudi 29 novembre 2007 Statut Membre Dernière intervention 19 mars 2008 - 30 déc. 2007 à 11:29
Bonjour,
bonjour, je suis dans les premiers pas pour apprendre l'interface graphique et mon probleme c d'associer 1 programme que j'ai fait à une inteface graphique,
le programme consiste à convertir 1 code vers 1 autre code si vous pouvez m'aider d'associer à ce programme une fenétre contien un espace pour ecrire le premier nombre(code) et 1 bouton pour la convertion et espace pour afficher le nouvelle code,
s'il vous plait donnez moi des simple idés pour le commonçer,
merci,
A voir également:

17 réponses

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
class ff extends JFram implements ActionListener
{
public ff()
{
setTitle("tu mets le titre de ta fenetre entre ala place de ce message");
setSize(400,400);// sa represente la taille de la fenetre
setLayout(new FlowLayout());
Contenair c=getContentPane();
bouton=new JButton("nom qui sera affiché");
c.add(bouton);
texte=new JFieldText(22);
c.add(texte);
bouton.setVisible(true);
texte.setVisible(true);// permet de voier la zone de saisie
bouton.addActionListener(this);
}
JButton bouton;
JFieldText texte;
public void actionPerformedActionEvent ev)
{ if ev.getSouirce ()==bouton)
{
le corps du programme que tu as fait
}
}
}
public class fr {
public static void main(String[]args)
{
ff fen=new ff();
fen.setVisible(true);
}
}
// si ^a ne fonctionne pas correctement tu verifies les "; " et majiscules
// j'espere que sa va marcher...
1
siba Messages postés 35 Date d'inscription jeudi 29 novembre 2007 Statut Membre Dernière intervention 19 mars 2008 1
7 déc. 2007 à 17:25
je travaille avec JAVA et j'ai besoin d'aide pour asocié mon programme à une boite de dialogue
0
Posotaz Messages postés 489 Date d'inscription samedi 23 juin 2007 Statut Membre Dernière intervention 19 juin 2011 225
13 déc. 2007 à 22:27
0
siba Messages postés 35 Date d'inscription jeudi 29 novembre 2007 Statut Membre Dernière intervention 19 mars 2008 1
14 déc. 2007 à 16:12
merci ,bob ,je vais l'aissayer
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
siba Messages postés 35 Date d'inscription jeudi 29 novembre 2007 Statut Membre Dernière intervention 19 mars 2008 1
15 déc. 2007 à 20:52
bonjour, bob,j'ai pas compris :
if ev.getSouirce ()==bouton)
{
le corps du programme que tu as fait
}
//esq le programme que j'ai fait de public class Gray{ ou seulement la methode, pourriez vous me donnez cette partie en detaille?
0
Posotaz Messages postés 489 Date d'inscription samedi 23 juin 2007 Statut Membre Dernière intervention 19 juin 2011 225
16 déc. 2007 à 00:10
On entre dans la méthode public void actionPerformed (ActionEvent ev) lorsqu'une "action" (au sens large) a été réalisée sur la fenêtre.

Ensuite dans cette méthode on essaie de découvrir sur quel composant de cette fenêtre l'action a été ralisée. Par le test ev.getSource()==bouton on s'assure qu'on a bien cliqué sur le bouton de conversion et c'est à ce moment là qu'il faut appeler ta méthode de conversion (que tu auras accessoirement rendue statique pour être appelée directement à partir de l'interface graphique).

Donc l'idéal serait d'avoir Gray.convert(texte.getText()) où public static String convert(String code) serait une méthode statique de la classe Gray qui s'occupe de la conversion et qui renvoie le résultat que tu pourras afficher dans une autre zone de texte (ou la même).
0
siba Messages postés 35 Date d'inscription jeudi 29 novembre 2007 Statut Membre Dernière intervention 19 mars 2008 1
16 déc. 2007 à 00:25
merci mensieur,alors je doit ecrire:
if ev.getSouirce ()==bouton) {
Gray.convert(text.getText());
}

//corrigez moi s'il vous plait
0
Posotaz Messages postés 489 Date d'inscription samedi 23 juin 2007 Statut Membre Dernière intervention 19 juin 2011 225
16 déc. 2007 à 01:20
Salut,

Posotaz ça ira ^^

Ta classe Conversion ou Gray (ou comment tu l'as appelée) contient actuellement la méthode public String convertir().
http://www.commentcamarche.net/forum/affich 4237855 code gray#0

Le problème de cette méthode c'est qu'elle ne peut recevoir aucun argument. Donc il faudrait la modifier afin de pouvoir lui passer un argument (le nombre décimal à convertir en notation Gray). Ainsi au lieu que le nombre décimal soit défini en tant que propriété de la classe, il le sera en tant qu'argument de la méthode "convertir".

Pour pouvoir appeler cette méthode de conversion sans instancier la classe qui la contient, il faut la déclarer statique comme j'ai expliqué plus haut. En faisant NomDeClasse.nomDeMéthode tu pourras l'appeler sans avoir dû faire un

Gray gray = new Gray(nombreDécimal);
String codeGray = gray.convertir();

Mais directement

String codeGray = Gray.convertir(nombreDécimal)

où nombreDécimal serait le texte contenu dans le composant graphique "texte" (texte.getText()). C'est ensuite le résulat obtenu dans la variable codeGray que tu devras placer dans un composant graphique de ton choix (un autre JTextField, un JLabel,...)
0
slt mensieur Postaz ,je veux savoir pourquoi je doit rendre la methode convertir static ?
j'ai fait ca mais sa na pas marché
//la methode convertir est avec le paramétre (String nbreBinaire)
JTextField text1;
JTextField text2;
public void actionPerformed(ActionEvent ev){

Gray g=new Gray();
g.convertir(text1.getText());
}
//quece qu'il me manq pour associé le texte1 au paramétre de la methode et texte2 au resultat de la methode?
merci d'avance
0
Posotaz Messages postés 489 Date d'inscription samedi 23 juin 2007 Statut Membre Dernière intervention 19 juin 2011 225
23 déc. 2007 à 00:32
>slt mensieur Postaz ,je veux savoir pourquoi je doit rendre la methode convertir static ?

Salut, je l'ai expliqué le pourquoi. Je t'invite à (re)lire le chapitre de ton manuel de Java traitant du mot clé "static".

Comme je te l'ai expliqué, il faut que ta méthode de conversion renvoie le résultat ! Relis ce passage de ma réponse :

String codeGray = Gray.convertir(nombreDécimal)

... C'est ensuite le résulat obtenu dans la variable codeGray que tu devras placer dans un composant graphique de ton choix (un autre JTextField, un JLabel,...)

Il ne te restera plus qu'à faire text2.setText(codeGray)
0
siba Messages postés 35 Date d'inscription jeudi 29 novembre 2007 Statut Membre Dernière intervention 19 mars 2008 1
23 déc. 2007 à 11:01
les choses sont encors boulversées ,ma methode elle renvoie un String codeGray pourquoi la mettre static j'ai relis plusieurs fois ta reponces ,
1-moi je sais q 'on ne peut pas utiliser une classe dans une autre class seulement si on fait appelle à 1 objet de cette classe
2-une methode static ne contient que des champs static et ne renvoit q'1 static et le nombreBinaire c 1 String !!!
3-j'ai pas compris comment utilsée les sets et les gets de JTextField
s'il vous plait je veut les reponce partie par partie je veux comprendre et non pas apprendre
0
Posotaz Messages postés 489 Date d'inscription samedi 23 juin 2007 Statut Membre Dernière intervention 19 juin 2011 225
25 déc. 2007 à 01:38
Ta phrase finale est très philosophique... mais pas fort sensée. Avant de pouvoir comprendre il faut apprendre, sinon comment veux-tu savoir comment utiliser les méthodes pour récupérer en placer une valeur dans un JTextField ? Les méthodes je les ai données pas par pas, à toi de lire la documentation Java pour le reste.

Une méthode statique ne renvoie pas de variables statiques (ce principe n'existe pas), je ne sais pas où tu as lu ça mais oui elle ne peut manipuler que des membres statiques d'une classe. C'était juste un conseil pour t'éviter de devoir instancier un objet à chaque fois que tu dois utiliser cette méthode de conversion. J'apparente ça à la méthode sqrt de Java... c'est une méthode qui reçoit un nombre en paramètre (celui dont on veut obtenir la racine carrée) et on l'appelle de façon statique. Ainsi toute méthode utilitaire qui ne sert qu'à faire une conversion ou un "simple" traitement devrait se retrouver statique.

Joyeux Noël ! :-)
0
siba Messages postés 35 Date d'inscription jeudi 29 novembre 2007 Statut Membre Dernière intervention 19 mars 2008 1
25 déc. 2007 à 20:50
merci pour tes aides mais le programme n'est pas encore executable ,je te donne mon programme et vous me donner quecequ'il me manque pour declancher l'action convertir,
-j'ai pas fait la notion de static pour ne pas me boulvérser les choses
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
class Grayy extends JFrame implements ActionListener{
public Grayy(){
JButton but;
JTextField text1;
JTextField text2;
setTitle("code Gray");
setSize(400,200);
setLayout(new FlowLayout());
Container c= getContentPane();
text1=new JTextField(4);
c.add(text1);

but=new JButton(" convertir ");
c.add( but);
c.add(new Label("le resultat"));
text2=new JTextField(4);
c.add(text2);

but.setVisible(true);
text1.setVisible(true);
but.addActionListener(this);
text2.setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
JButton but;
JTextField text1;
JTextField text2;

public String getText(){
return text1.getText();
}
public void setText(String ch){
text1.setText( ch);
}



public void actionPerformed(ActionEvent ev){
Gray g=new Gray();

String nbreGray=g.convertir(text1.getText());
text2.setText(nbreGray);
text2.getText();

}



}public class Tt{
public static void main (String[]args){
Grayy fen=new Grayy();
fen.setVisible(true);
}
}

//merci pour votre aide
0
Posotaz Messages postés 489 Date d'inscription samedi 23 juin 2007 Statut Membre Dernière intervention 19 juin 2011 225
25 déc. 2007 à 21:58
Hello,


C'est très bien mais l'instruction " text2.getText();" ne sert à rien.

Quand tu exécuteras le programme il va rechercher un main dans la classe publique courante donc ça devrait fonctionner (ton fichier doit bien se nommer Tt.java et être compilé sous le nom Tt.class.

Inutile de placer explicitement la visibilité des composants à true (à part la fenêtre) c'est le comportement par défaut. Par contre à ta fenêtre il faut lui fixer une taille (utilise pour ça les méthodes setBounds ou setSize de la classe JFrame) sinon tu ne la verras pas, mais là tu l'as fait.
0
siba Messages postés 35 Date d'inscription jeudi 29 novembre 2007 Statut Membre Dernière intervention 19 mars 2008 1
25 déc. 2007 à 23:23
merci pour ces remarques ,j'ai les corrgé et le test du main il est dans 1 fichier individuelle j'ai le compilé et executé il me parait une fenétre avec 2 JtextField et 1 bouton et quand je tape le nbre binaire dans la premiere zone par exemple :1000 et je cliqe sur le bouton pour voir le resultat en code Gray rien ne me affiche et il m'ecrit:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at Grayy.actionPerformed(Grayy.java:45)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)......
j'ai pas compris normalement j'ai tous fait ?!!!
//donnez moi votres possibilité pour resoudre ce probléme ,Merci bien et joyeux et heureux Noel
0
Posotaz Messages postés 489 Date d'inscription samedi 23 juin 2007 Statut Membre Dernière intervention 19 juin 2011 225
27 déc. 2007 à 23:05
Merci.

NullPointerException c'est une erreur qui survient parce qu'une variable objet est à null. Dans la méthode actionPerformed tu as les variables suivantes :

g => devrait contenir une instance de Gray, donc je l'exclus
text1 => (voir plus bas)
nbreGray => Il faut bien vérifier que la méthode g.convertir te renvoie bien un String et pas null mais je ne pense pas que ça vienne de là
text2 => (voir plus bas)

En fait je n'avais pas remarqué mais tu sembles déclarer deux fois text1 et text2. Une fois en variables locales dans le constructeur Grayy (c'est là que tu les instancies avec l'opérater "new") et une autre fois en propriétés de classes. Du coup quand tu te trouves en dehors du constructeur, appeler text1 ou text2 appelera les propriétés de la classe (celles que tu n'as pas instanciées), ce qui est différent des variables déclarées dans le constructeur, bien qu'elles portent le même nom.

Plus simplement, retire la déclaration JTextField dans le constructeur.
 class Grayy extends JFrame implements ActionListener{

// propriétés de la classe  (mets-les toujours au début de préférence, question de lisibilité)
private JButton but;
private JTextField text1;
private JTextField text2; 

//constructeur
public Grayy(){ 
// on instancie les propriétés sans en déclarer d'autres localement, tu l'as déjà fait au niveau de la classe et ce n'est pas pareil
text1 = new JTextField(4);
text2 = new JTextField(4);
but = new JButton("convertir");
....
}

J'espère avoir été clair sur l'erreur.
0
siba Messages postés 35 Date d'inscription jeudi 29 novembre 2007 Statut Membre Dernière intervention 19 mars 2008 1
30 déc. 2007 à 11:29
bonjour , En fin.....,merci bien l'ereur etait dans la declaration j'ai la reglé grace à vous
merci,bonne journée
0

Discussions similaires