Java zone de saisie boutons

Fermé
panp - 13 août 2008 à 13:52
 panp - 18 août 2008 à 11:33
Bonjour,

J'ai un probleme car je fais un programme java avec des zones de saisie sur une premiére page avec un bouton sur cette même page mais quand je passe à la page suivante, mes données rentrées ne sont pas pris en compte comment dois je faire??

aidez moi!!!!!!!!!!!!!!!!!!!!!!!!!
A voir également:

20 réponses

voici mon code de ma premiére page!!!




import javax.swing.border.*;
import java.io.*;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JButton;
import java.awt.FlowLayout;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;



public class page1 extends JFrame implements ActionListener
{

// Attributs

JButton btn1=null;
JButton btn2=null;
Container conteneur=null;
JLabel titre;
JTextField TestSaisie1;
JTextField TestSaisie2;
JTextField TestSaisie3;
JTextField TestSaisie4;

// Constructeurs

public page1()
{
this.setTitle("Jeu des rectangles");
this.setSize(new Dimension(450,450));
this.setLocationRelativeTo(null);
conteneur=this.getContentPane();
conteneur.setLayout(null);



JLabel titre;
titre = new JLabel("Entrer vos rectangles suivant les coordonnées :",JLabel.CENTER);
conteneur.add(titre);
titre.setBounds(0,30,400,30);



// coordonnées de x
JLabel x;
x= new JLabel("Entrer la coordonnées de x :",JLabel.CENTER);
conteneur.add(x);
x.setBounds(10,90,200,30);


// Zone de saisie
TestSaisie1=new JTextField(2);
TestSaisie1.setMaximumSize(TestSaisie1.getPreferredSize());
conteneur.add(TestSaisie1);
TestSaisie1.setBounds(200,90,50,30);


// coordonnées de y
JLabel y;
y= new JLabel("y :",JLabel.CENTER);
conteneur.add(y);
y.setBounds(250,90,50,30);

// Zone de saisie
TestSaisie2=new JTextField(2);
TestSaisie2.setMaximumSize(TestSaisie2.getPreferredSize());
conteneur.add(TestSaisie2);
TestSaisie2.setBounds(300,90,50,30);


// largeur
JLabel largeur;
largeur= new JLabel("Largeur :",JLabel.CENTER);
conteneur.add(largeur);
largeur.setBounds(10,160,100,30);

// Zone de saisie
TestSaisie3=new JTextField(2);
TestSaisie3.setMaximumSize(TestSaisie3.getPreferredSize());
conteneur.add(TestSaisie3);
TestSaisie3.setBounds(200,160,50,30);


// longueur
JLabel longueur;
longueur= new JLabel("Longueur :",JLabel.CENTER);
conteneur.add(longueur);
longueur.setBounds(10,230,100,30);

// Zone de saisie
TestSaisie4=new JTextField(2);
TestSaisie4.setMaximumSize(TestSaisie4.getPreferredSize());
conteneur.add(TestSaisie4);
TestSaisie4.setBounds(200,230,50,30);

// couleur
JLabel couleur;
couleur= new JLabel("Couleur :",JLabel.CENTER);
conteneur.add(couleur);
couleur.setBounds(30,300,50,30);

btn1=new JButton();
btn1.setText("continuer");
btn1.setBounds(30,350,150,30);
btn1.addActionListener(this);
conteneur.add(btn1);



btn2=new JButton();
btn2.setText("ajouter");
btn2.setBounds(230,350,150,30);
btn2.addActionListener(this);
conteneur.add(btn2);


}

public void actionPerformed(ActionEvent ae)
{

if(ae.getSource()==btn1)
dispose();
new newfenetre().setVisible(true);
System.out.println(TestSaisie1.getText());
if(ae.getSource()==btn2)
dispose();
new newfenetre().setVisible(true);
System.out.println(TestSaisie2.getText());
}






// Programme main

public static void main (String args[])
{
new page1().setVisible(true);
}
}
1
choubaka Messages postés 39375 Date d'inscription jeudi 4 avril 2002 Statut Modérateur Dernière intervention 14 avril 2024 2 100
13 août 2008 à 13:54
Salut

c'est du java ou du javascript ..

avec les éléments que tu donnes, c'est pas évident de t'aider
0
c'est avec du java tout court
0
ouchemhou Messages postés 6 Date d'inscription samedi 8 décembre 2007 Statut Membre Dernière intervention 19 août 2008
13 août 2008 à 14:09
un peu de code SVp
0

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

Posez votre question
choubaka Messages postés 39375 Date d'inscription jeudi 4 avril 2002 Statut Modérateur Dernière intervention 14 avril 2024 2 100
13 août 2008 à 14:45
Salut

ok,

une petite erreur, tu déclares deux fois JLabel titre (1 dans les déclarations de variable et 1 dans le constructeur)
mais bon, c'est pas là ton problème
0
choubaka Messages postés 39375 Date d'inscription jeudi 4 avril 2002 Statut Modérateur Dernière intervention 14 avril 2024 2 100
13 août 2008 à 14:49
c'est quoi l'objet newfenetre ??
0
c'est ma deuxiéme fenetre qui est censé avoir récupéré les infos de la page

voici son code:

import java.io.*;
import javax.swing.*;
import java.awt.*;
import javax.swing.border.*;


public class newfenetre extends JFrame
{

public newfenetre()
{

//JLabel affiche;

this.setTitle("Jeu des Rectangles");
this.setSize( new Dimension(450,450));
this.setLocationRelativeTo(null);


this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

}
0
choubaka Messages postés 39375 Date d'inscription jeudi 4 avril 2002 Statut Modérateur Dernière intervention 14 avril 2024 2 100
13 août 2008 à 14:56
autre question quand tu dis que tes données ne sont pas prises en compte

tu veux dire quoi ... tu dois les retrouver où tes données ???

sur la deuxième page ? en mémoire sur la première ??

essaye d'expliquer ce que doit faire ton programme, parce que c'est pas facile de deviner
0
donc en gros dans mes zones de saisie de ma page1 je rentre des données des variables x, y largeur et longueur ensuite j'ai essayé d'afficher x sur new fenetre mais à chaque essai il était afficher 0.

En fait au final de mon exercice, je dois récupérer x, y , largueur et longueur donnés par l'utilisateur et dans newfenetre tracer des rectangles qui correspondent aux coordonées définies dans page1!
0
choubaka Messages postés 39375 Date d'inscription jeudi 4 avril 2002 Statut Modérateur Dernière intervention 14 avril 2024 2 100
13 août 2008 à 15:17
à mon avis, le problème que tu as c'est le passage des données d'un objet à un autre ..

pour que celà fonctionne, il y a deux possibilités

1. Soit la page 1 connait la page2 et peux alors (lors de l'evenement généré par le bouton) faire appel à une methode publique de cette dernière. Cette méthode prendrait en argument le texte saisi.

2. soit la page 2 utiliserait des méthode publique statique ce qui reviendrait quasiment au même.

En résumé, la page 1 doit "connaître la page 2. Celle ci doit donc être une instance reconnue, par exemple dans la déclaration de variable, le constructeur pourra alors être appelé dans l'évenement du bouton MAIS vu que c'est une instance connue, on peut faire appel à ses méthodes.

Une autre solution aussi c'est de créer un constructeur de newfenetre avec comme arguments les saisies des zones texte

0
que dois je mettre dans la page 1 pour qu'elle reconnaisse la page 2 exactement? dsl je suis pas très forte!!^^
0
choubaka Messages postés 39375 Date d'inscription jeudi 4 avril 2002 Statut Modérateur Dernière intervention 14 avril 2024 2 100
13 août 2008 à 15:27
// Attributs

JButton btn1=null;
JButton btn2=null;
Container conteneur=null;
JLabel titre;
JTextField TestSaisie1;
JTextField TestSaisie2;
JTextField TestSaisie3;
JTextField TestSaisie4;
newfenetre page2;



ça c'est pour "préparer le terrain"

ensuite dans la méthode qui suit l'event du bouton tu trouveras quelquechsoe du genre

page2 = new newfenetre();
// exemple si une méthode est créee pour faire passer les saisies

page2.setSaisies(TestSaisie1.getText());

// c'est un exemple bien sûr


dans ta classe newfenetre, tu dois donc avoir une méthode

public void setSaisies(String saisies){

// traitement des saisies

}
0
ouchemhou Messages postés 6 Date d'inscription samedi 8 décembre 2007 Statut Membre Dernière intervention 19 août 2008
13 août 2008 à 15:36
faite la dernière solution de choubaka je pense c'est mieux,

new newfenetre(TestSaisie1.getText());

et dans la classe :

public class newfenetre extends JFrame
{

public newfenetre(String saisi)
{


System.out.println(saisi);

//JLabel affiche;

this.setTitle("Jeu des Rectangles");
this.setSize( new Dimension(450,450));
this.setLocationRelativeTo(null);


this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

}
0
sandul Messages postés 3924 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 8 octobre 2010 722
13 août 2008 à 16:58
Salut,

Je n'ai pas lu ton code, mais s'il s'agit de créer un "wizard" (pour passer d'un page à l'autre et retenir les configurations précédentes, pouvoir revenir en arrière etc.), il serait utilie de regarder ceci: https://wizard.dev.java.net/

Très jolie librairie qui répond à ces besoins (ne pas réinventer la roue...)

Si ce n'est pas ceci que tu cherches, mille excuses.
++
0
choubaka Messages postés 39375 Date d'inscription jeudi 4 avril 2002 Statut Modérateur Dernière intervention 14 avril 2024 2 100
13 août 2008 à 18:04
je pense qu'ici, c'est plus l'aspect didactique qui est mis en valeur ..
0
sandul Messages postés 3924 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 8 octobre 2010 722
13 août 2008 à 18:21
Tout à fait d'accord avec toi, mais comme je n'étais pas sûr du but souhaité, j'ai préféré avancer cette solution. S'il s'agit d'un wizard tel que décrit plus haut il n'est pas "didactique", à mon humble avis, d'essayer de corriger un code incomplet ou qui ne fait pas appel aux bibliothèques existantes.

Comme avec quelqu'un qui crée une appli Web et qui demande de l'aide pour le codage... du serveur http. J'exagère, bien sûr, mais je ne pense pas être sur une piste (totalement) erronnée.

++
0
choubaka Messages postés 39375 Date d'inscription jeudi 4 avril 2002 Statut Modérateur Dernière intervention 14 avril 2024 2 100 > sandul Messages postés 3924 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 8 octobre 2010
13 août 2008 à 18:24
disons qu'ici, je crois deviner ce que recherche le formateur .. la visibilité, ou du moins la communication inter classe
0
sandul Messages postés 3924 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 8 octobre 2010 722 > choubaka Messages postés 39375 Date d'inscription jeudi 4 avril 2002 Statut Modérateur Dernière intervention 14 avril 2024
13 août 2008 à 18:31
^^

Disons que je ne vois pas du tout ce que tu veux dire par là, mais bon. Si par le formateur c'est à moi que tu fais référence, disons que mon post a pour but d'informer qu'il existe une bibliothèque répondant aux besoins demandés et pouvant être utilisée sans souci (car open source).

peace
0
choubaka Messages postés 39375 Date d'inscription jeudi 4 avril 2002 Statut Modérateur Dernière intervention 14 avril 2024 2 100 > sandul Messages postés 3924 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 8 octobre 2010
13 août 2008 à 19:31
à moins que tu ne sois le prof de l'intiateur de ce message, non je ne pensais pas à toi ..
0
sandul Messages postés 3924 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 8 octobre 2010 722 > choubaka Messages postés 39375 Date d'inscription jeudi 4 avril 2002 Statut Modérateur Dernière intervention 14 avril 2024
13 août 2008 à 19:32
Ooooups, mea culpa, complètement à l'ouest moi.

++
0
Resalut

Bon alors j'ai essayer de rebosser ma java ce week end mais j'ai rencontré encore le même problème

MA PAGE 1

import javax.swing.border.*;
import java.io.*;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JButton;
import java.awt.FlowLayout;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;



public class page1 extends JFrame implements ActionListener
{

// Attributs

JButton btn1=null;
JButton btn2=null;
Container conteneur=null;
JTextField TestSaisie1;
JTextField TestSaisie2;
JTextField TestSaisie3;
JTextField TestSaisie4;


// Constructeurs

public page1()
{
this.setTitle("Jeu des rectangles");
this.setSize(new Dimension(450,450));
this.setLocationRelativeTo(null);
conteneur=this.getContentPane();
conteneur.setLayout(null);



JLabel titre;
titre = new JLabel("Entrer vos rectangles suivant les coordonnées :",JLabel.CENTER);
conteneur.add(titre);
titre.setBounds(0,30,400,30);



// coordonnées de x
JLabel x;
x= new JLabel("Entrer la coordonnées de x :",JLabel.CENTER);
conteneur.add(x);
x.setBounds(10,90,200,30);


// Zone de saisie
TestSaisie1=new JTextField(2);
TestSaisie1.setMaximumSize(TestSaisie1.getPreferredSize());
conteneur.add(TestSaisie1);
TestSaisie1.setBounds(200,90,50,30);


// coordonnées de y
JLabel y;
y= new JLabel("y :",JLabel.CENTER);
conteneur.add(y);
y.setBounds(250,90,50,30);

// Zone de saisie
TestSaisie2=new JTextField(2);
TestSaisie2.setMaximumSize(TestSaisie2.getPreferredSize());
conteneur.add(TestSaisie2);
TestSaisie2.setBounds(300,90,50,30);


// largeur
JLabel largeur;
largeur= new JLabel("Largeur :",JLabel.CENTER);
conteneur.add(largeur);
largeur.setBounds(10,160,100,30);

// Zone de saisie
TestSaisie3=new JTextField(2);
TestSaisie3.setMaximumSize(TestSaisie3.getPreferredSize());
conteneur.add(TestSaisie3);
TestSaisie3.setBounds(200,160,50,30);


// longueur
JLabel longueur;
longueur= new JLabel("Longueur :",JLabel.CENTER);
conteneur.add(longueur);
longueur.setBounds(10,230,100,30);

// Zone de saisie
TestSaisie4=new JTextField(2);
TestSaisie4.setMaximumSize(TestSaisie4.getPreferredSize());
conteneur.add(TestSaisie4);
TestSaisie4.setBounds(200,230,50,30);

// couleur
JLabel couleur;
couleur= new JLabel("Couleur :",JLabel.CENTER);
conteneur.add(couleur);
couleur.setBounds(30,300,50,30);

btn1=new JButton();
btn1.setText("continuer");
btn1.setBounds(30,350,150,30);
btn1.addActionListener(this);
conteneur.add(btn1);



btn2=new JButton();
btn2.setText("ajouter");
btn2.setBounds(230,350,150,30);
btn2.addActionListener(this);
conteneur.add(btn2);


}

public void actionPerformed(ActionEvent ae)
{

if(ae.getSource()==btn1)
dispose();
new newfenetre().setVisible(true);

TestSaisie1.setText("");
if(ae.getSource()==btn2)
dispose();
new newfenetre().setVisible(true);
System.out.println(TestSaisie1.getText());
TestSaisie1.setText("");
}






// Programme main

public static void main (String args[])
{
new page1().setVisible(true);
}
}



ET MA NEWFENETRE

import java.io.*;
import javax.swing.*;
import java.awt.*;
import javax.swing.border.*;


public class newfenetre extends JFrame
{
//ATTRIBUTS

//points
private int x;
private int y;
private int TestSaisie1;

Container conteneur=null;

public newfenetre()
{

TestSaisie1=x;

//JLabel affiche;

this.setTitle("Jeu des Rectangles");
this.setSize( new Dimension(450,450));
this.setLocationRelativeTo(null);
conteneur=this.getContentPane();
conteneur.setLayout(null);

JLabel label;
label=new JLabel(TestSaisie1+" a gagné, Félicitation",JLabel.CENTER);
conteneur.add(label);
label.setBounds(0,30,400,30);

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

}


mais je n'arrive tjr pa à afficher x avec la coordonnées rentées dans la page1!!!


AIDEZZZZZZZZZZZZZ moi!!!
0
choubaka Messages postés 39375 Date d'inscription jeudi 4 avril 2002 Statut Modérateur Dernière intervention 14 avril 2024 2 100
17 août 2008 à 20:35
salut

tu n'arrives pas à faire passer les paramètres parce qu'il n'y a aucune relation entre les deux fenêtres

MA PAGE 1 

import javax.swing.border.*; 
import java.io.*; 
import javax.swing.JFrame; 
import javax.swing.JPanel; 
import javax.swing.JButton; 
import java.awt.FlowLayout; 
import javax.swing.*; 
import java.awt.*; 
import java.awt.event.*; 



public class page1 extends JFrame implements ActionListener 
{ 

// Attributs 

JButton btn1=null; 
JButton btn2=null; 
Container conteneur=null; 
JTextField TestSaisie1; 
JTextField TestSaisie2; 
JTextField TestSaisie3; 
JTextField TestSaisie4; 
newfenetre fenetre2;

// Constructeurs 

public page1() 
{ 
this.setTitle("Jeu des rectangles"); 
this.setSize(new Dimension(450,450)); 
this.setLocationRelativeTo(null); 
conteneur=this.getContentPane(); 
conteneur.setLayout(null); 



JLabel titre; 
titre = new JLabel("Entrer vos rectangles suivant les coordonnées :",JLabel.CENTER); 
conteneur.add(titre); 
titre.setBounds(0,30,400,30); 



// coordonnées de x 
JLabel x; 
x= new JLabel("Entrer la coordonnées de x :",JLabel.CENTER); 
conteneur.add(x); 
x.setBounds(10,90,200,30); 


// Zone de saisie 
TestSaisie1=new JTextField(2); 
TestSaisie1.setMaximumSize(TestSaisie1.getPreferredSize()); 
conteneur.add(TestSaisie1); 
TestSaisie1.setBounds(200,90,50,30); 


// coordonnées de y 
JLabel y; 
y= new JLabel("y :",JLabel.CENTER); 
conteneur.add(y); 
y.setBounds(250,90,50,30); 

// Zone de saisie 
TestSaisie2=new JTextField(2); 
TestSaisie2.setMaximumSize(TestSaisie2.getPreferredSize()); 
conteneur.add(TestSaisie2); 
TestSaisie2.setBounds(300,90,50,30); 


// largeur 
JLabel largeur; 
largeur= new JLabel("Largeur :",JLabel.CENTER); 
conteneur.add(largeur); 
largeur.setBounds(10,160,100,30); 

// Zone de saisie 
TestSaisie3=new JTextField(2); 
TestSaisie3.setMaximumSize(TestSaisie3.getPreferredSize()); 
conteneur.add(TestSaisie3); 
TestSaisie3.setBounds(200,160,50,30); 


// longueur 
JLabel longueur; 
longueur= new JLabel("Longueur :",JLabel.CENTER); 
conteneur.add(longueur); 
longueur.setBounds(10,230,100,30); 

// Zone de saisie 
TestSaisie4=new JTextField(2); 
TestSaisie4.setMaximumSize(TestSaisie4.getPreferredSize()); 
conteneur.add(TestSaisie4); 
TestSaisie4.setBounds(200,230,50,30); 

// couleur 
JLabel couleur; 
couleur= new JLabel("Couleur :",JLabel.CENTER); 
conteneur.add(couleur); 
couleur.setBounds(30,300,50,30); 

btn1=new JButton(); 
btn1.setText("continuer"); 
btn1.setBounds(30,350,150,30); 
btn1.addActionListener(this); 
conteneur.add(btn1); 



btn2=new JButton(); 
btn2.setText("ajouter"); 
btn2.setBounds(230,350,150,30); 
btn2.addActionListener(this); 
conteneur.add(btn2); 


} 

public void actionPerformed(ActionEvent ae) 
{ 

if(ae.getSource()==btn1) 
dispose(); 
new newfenetre().setVisible(true); 

TestSaisie1.setText(""); 
if(ae.getSource()==btn2) 
dispose(); 
fenetre2 new newfenetre(TestSaisie1.getText());
fenetre2.setVisible(true); 
//System.out.println(TestSaisie1.getText()); 
TestSaisie1.setText(""); 
} 






// Programme main 

public static void main (String args[]) 
{ 
new page1().setVisible(true); 
} 
} 



ET MA NEWFENETRE 

import java.io.*; 
import javax.swing.*; 
import java.awt.*; 
import javax.swing.border.*; 


public class newfenetre extends JFrame 
{ 
//ATTRIBUTS 

//points 
private int x; 
private int y; 
private int TestSaisie1; 

Container conteneur=null; 

public newfenetre(int saisie) 
{ 

 TestSaisie1 = saisie;  


//JLabel affiche; 

this.setTitle("Jeu des Rectangles"); 
this.setSize( new Dimension(450,450)); 
this.setLocationRelativeTo(null); 
conteneur=this.getContentPane(); 
conteneur.setLayout(null); 

JLabel label; 
label=new JLabel(TestSaisie1+" a gagné, Félicitation",JLabel.CENTER); 
conteneur.add(label); 
label.setBounds(0,30,400,30); 

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

}


} 


je ne l' ai pas compilé, mais si tu regarde en gras les modificiation, tu verras que j'utilise l'option constructeur avec arguments
0
jai essayé ta solution mais malheureusement cela ne marche pas même en modifiant quelque peu le programme!!
0
Bonjour,

Je pense que tu devrais d'abord te créer une première fenetre toute simple avec un label, un champ de saisie et un bouton avec voir si tu arrives à récupérer la valeur saisie dans la console avec un system.out ou avec un petit JOptionPane.

Une fois que tu y arriveras, tu pourras faire en sorte de faire un appel d'une fonction de ta page 2 dans laquelle tu passeras tes paramètres de saisies.

Bonne chance !
0
Bonjour ca me parrait bizare que pour un simple problème comme ca personne arrive à donner la solution mais bon c'est pa grave!Déjà ton code est très complexe donc difficille à comprendre mais je ne suis pas la pour le style de ton code.
Ton problème vient du fait que tu n'as pas ajouté à ton constructeur une ActionListener donc tes boutons ne peuvent pas se manfester...
Il te suffit de faire pour chaque bouton :
JButton b;
b=new JButton("message");
add(b);
b.addActionListener(this);
et le tou
0
j'ai essayer ton code et cela a le même résultat que mon code précédent c'est à dire que quand j'affiche la fenetre 2 à la place de x j'ai 0 de afficher !!
0