Java zone de saisie boutons

panp -  
 panp -
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

panp
 
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 39442 Date d'inscription   Statut Modérateur Dernière intervention   2 105
 
Salut

c'est du java ou du javascript ..

avec les éléments que tu donnes, c'est pas évident de t'aider
0
panp
 
c'est avec du java tout court
0
ouchemhou Messages postés 6 Date d'inscription   Statut Membre Dernière intervention  
 
un peu de code SVp
0

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

Posez votre question
choubaka Messages postés 39442 Date d'inscription   Statut Modérateur Dernière intervention   2 105
 
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 39442 Date d'inscription   Statut Modérateur Dernière intervention   2 105
 
c'est quoi l'objet newfenetre ??
0
panp
 
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 39442 Date d'inscription   Statut Modérateur Dernière intervention   2 105
 
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
panp
 
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 39442 Date d'inscription   Statut Modérateur Dernière intervention   2 105
 
à 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
panp
 
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 39442 Date d'inscription   Statut Modérateur Dernière intervention   2 105
 
// 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   Statut Membre Dernière intervention  
 
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 3927 Date d'inscription   Statut Membre Dernière intervention   723
 
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 39442 Date d'inscription   Statut Modérateur Dernière intervention   2 105
 
je pense qu'ici, c'est plus l'aspect didactique qui est mis en valeur ..
0
sandul Messages postés 3927 Date d'inscription   Statut Membre Dernière intervention   723
 
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 39442 Date d'inscription   Statut Modérateur Dernière intervention   2 105 > sandul Messages postés 3927 Date d'inscription   Statut Membre Dernière intervention  
 
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 3927 Date d'inscription   Statut Membre Dernière intervention   723 > choubaka Messages postés 39442 Date d'inscription   Statut Modérateur Dernière intervention  
 
^^

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 39442 Date d'inscription   Statut Modérateur Dernière intervention   2 105 > sandul Messages postés 3927 Date d'inscription   Statut Membre Dernière intervention  
 
à moins que tu ne sois le prof de l'intiateur de ce message, non je ne pensais pas à toi ..
0
sandul Messages postés 3927 Date d'inscription   Statut Membre Dernière intervention   723 > choubaka Messages postés 39442 Date d'inscription   Statut Modérateur Dernière intervention  
 
Ooooups, mea culpa, complètement à l'ouest moi.

++
0
panp
 
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 39442 Date d'inscription   Statut Modérateur Dernière intervention   2 105
 
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
panp
 
jai essayé ta solution mais malheureusement cela ne marche pas même en modifiant quelque peu le programme!!
0
Nixial
 
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
ray_fab
 
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
panp
 
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