Mon Probleme JTextField
el_kader
-
tarek_dotzero Messages postés 834 Statut Membre -
tarek_dotzero Messages postés 834 Statut Membre -
Bonjour,
je suis tristre parcque le code ne done mois toujour ce que je veux "oh my head"
please aide mois ;
le tableau tabi
prend les valeur qui sont dans le jtextfield
1 clic sur ok dans la fenetre oui le tableau prend une valeur ca march
mais dans le 2 eme clic sur le button ok la premire case s'ecrase porquois ?
porquois ?porquois ?porquois ?porquois ?
voici le code :
je suis tristre parcque le code ne done mois toujour ce que je veux "oh my head"
please aide mois ;
le tableau tabi
prend les valeur qui sont dans le jtextfield
1 clic sur ok dans la fenetre oui le tableau prend une valeur ca march
mais dans le 2 eme clic sur le button ok la premire case s'ecrase porquois ?
porquois ?porquois ?porquois ?porquois ?
voici le code :
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Arrays;
import java.util.Scanner;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
public class simpl {
private static int h=30;
private static int a=500;
private static int s=0;
private static int f=-1;
private static int [][] temp=new int [100][100];
public static void main(String args[]) {
JFrame frame = new JFrame();
JPanel panel =new JPanel();
panel.setLayout(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JButton b=new JButton("ok");
b.setBounds(430, 150, 70, 40);
frame.add(panel);
panel.add(b);
//le nombrede contraintes
JTextField txt1 =new JTextField();
txt1.setBounds(100,h, 90,40);
panel.add(txt1);
//le nombre des variables
JTextField txt2 =new JTextField();
txt2.setBounds(100,h+50, 90,40);
panel.add(txt2);
JLabel label3 =new JLabel("variables ");
panel.add(label3);
label3.setBounds(250-92-140, h, 170, 40);
JLabel label4 =new JLabel(" contraintes");
panel.add(label4);
label4.setBounds(250-92-140, h+50, 170, 40);
JTextField c1 =new JTextField();
c1.setBounds(a+250,h, 90,40);
panel.add(c1);
frame.add(panel);
// frame.add(panel);
b.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent arg0) {
int nbvar=Integer.parseInt(txt1.getText());
int nbc=Integer.parseInt(txt2.getText());
int[] tabi =new int[nbc+1];
f=f+1;
int k=Integer.parseInt(c1.getText());
tabi[f]=k;
System.out.println(Arrays.toString(tabi));
if(f==nbvar){
f=-1;
}}
});
frame.setSize(900, 350);
frame.setVisible(true);
}
}
1 réponse
Bonjour,
tabi est déclaré à l'intérieur de la méthode actionPerformed(...), c'est à dire à chaque fois que vous cliquez, le tableau est créé, la valeur et ajoutée au tableau et à al fin de la méthode le tableau est supprimé. Au prochain click, un autre nouveau tableau vide est créé, la valeur est y ajoutée et à la fin de la méthode il est à nouveau supprimé.
La solution est de déclaré le tableau comme attribut de la classe au même niveau que s, f et temp. Malgré que tous ces attributs sont des champs "static" chose qui est concetuellement incorrecte mais cela va marcher.
tabi est déclaré à l'intérieur de la méthode actionPerformed(...), c'est à dire à chaque fois que vous cliquez, le tableau est créé, la valeur et ajoutée au tableau et à al fin de la méthode le tableau est supprimé. Au prochain click, un autre nouveau tableau vide est créé, la valeur est y ajoutée et à la fin de la méthode il est à nouveau supprimé.
La solution est de déclaré le tableau comme attribut de la classe au même niveau que s, f et temp. Malgré que tous ces attributs sont des champs "static" chose qui est concetuellement incorrecte mais cela va marcher.