Mon Probleme JTextField

Fermé
el_kader - Modifié le 16 nov. 2017 à 22:33
tarek_dotzero Messages postés 817 Date d'inscription jeudi 19 juillet 2007 Statut Membre Dernière intervention 12 avril 2022 - 20 nov. 2017 à 00:13
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 :

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

tarek_dotzero Messages postés 817 Date d'inscription jeudi 19 juillet 2007 Statut Membre Dernière intervention 12 avril 2022 120
20 nov. 2017 à 00:13
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.
0