IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Agents de placement/Fenêtres Java Discussion :

Que se passe-t-il lorsqu'une boite de dialogue est ouverte ?


Sujet :

Agents de placement/Fenêtres Java

  1. #1
    Membre du Club
    Femme Profil pro
    Developpeur
    Inscrit en
    Février 2010
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Developpeur

    Informations forums :
    Inscription : Février 2010
    Messages : 101
    Points : 68
    Points
    68
    Par défaut Que se passe-t-il lorsqu'une boite de dialogue est ouverte ?
    Bonjour,

    J'ai un affichage qui se fait correctement apres un repaint si je met une boite de dialogue, sinon mon repaint ne se fait pas correctement...
    Je ne comprends pas pourquoi, du coup, je me pose la question de savoir qu'est ce qui se passe lorsqu'une boite de dialogue est ouverte ?
    Le probleme concerne des JButton mais pas le JTextField...

  2. #2
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,


    Aucune idée sans voir ton code, mais je parierais que tu ne respectes pas les règles de l'EDT :

    • Toutes modifications d'un composant graphique doit être fait dans l'EDT
    • Tous les traitements "lourds" ou "bloquant" doivent être fait dans un thread séparé.



    a++

  3. #3
    Membre du Club
    Femme Profil pro
    Developpeur
    Inscrit en
    Février 2010
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Developpeur

    Informations forums :
    Inscription : Février 2010
    Messages : 101
    Points : 68
    Points
    68
    Par défaut
    Création de mes boutons :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    public JButton getJButtonE(int num) {
    	JButton current = new JButton();
    	current .setPreferredSize(new Dimension(40, 10));
    	current .setName("ButtonE" + num);
    	current .setText(""); 
    	listOfButtonE.add(current);;
    	return current;
    }
     
    public JButton getJlabelColorisei(int i){
    	JButton current = new JButton();
    	current .setPreferredSize(new Dimension(40, 25));
    	current .setName("labelColorise" + i);
    	current .setBorder(null);
    	current .setText("");
    	listOfLabelE.add(current);;
    	return current;
    }
    Création de mes JTextFields

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
     
    @SuppressWarnings("deprecation")
    public void jTextFieldsTableau(JPanel tableau, int colonnes)
    {
    	// Pour chaque enregistrement, mon tableau s'affice sur 5 lignes (champs) et 8 colonnes (enregistrement) alors que dans la table j'ai 8 champs
    	for ( int enr = 1; enr < colonnes +1 ; enr++) 
    	{
    		int colvisible=1;          
    		for ( int col = 1; col <10 ; col++) {
    		//j'enleve les champs que je ne veux pas
    		if ((col==1)||(col==2)||(col==3)){}else {
     
    			JTextField jTextFieldTableau = new JTextField();
    			//Taille prefere de ma zone de texte
    			jTextFieldTableau.setPreferredSize(new Dimension(40, 30));
    			//Designation du nom particulier pour y revenir et les modifier si besoin
    			jTextFieldTableau.setName( "Text" + String.valueOf(enr) + String.valueOf(col-1) );
    			//Mise ne place de la zone dans le jPane
    			contTableau = new Constraints(new Leading((enr * 40)-40, 10, 10), new Leading(((colvisible)*30)-5, 12, 12));
     
    			if ((col == 9) && (enr == 1))
    			{
    				contTableau1 = contTableau;
    				tableau.add(jTextFieldTableau,contTableau1);  	
    		        	}
    			else
    			{
    				if ((col == 9) && (enr == 2))
    		            		{
    					contTableau2 = contTableau;
    					tableau.add(jTextFieldTableau,contTableau2);         			    	
    		            		  }
    		            		  else
    	            			  {
    	                			  if ((col == 9) && (enr == 3))
    	                			  {
    	            			    		contTableau3 = contTableau;
    		            			    	tableau.add(jTextFieldTableau,contTableau3);              			    	
    		                		  }
    	             	   		  else
    	                			  {
    	                				System.out.println(jTextFieldTableau.getName());                										tableau.add(jTextFieldTableau,contTableau);
    	                		  	}
    	            		  	}  
    	        		}
     
    	        		//Je le met dans un ArrayList et le gere par généricité 
    	        		listOfTextField.add(jTextFieldTableau );
    		        	jTextFieldTableau.enable(false);
     
    		        	colvisible = colvisible +1;
     
    	        	}
    		}
    	}
    }

  4. #4
    Membre du Club
    Femme Profil pro
    Developpeur
    Inscrit en
    Février 2010
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Developpeur

    Informations forums :
    Inscription : Février 2010
    Messages : 101
    Points : 68
    Points
    68
    Par défaut
    Le premier passage, pas de soucis, apres je les supprime, puis les recréés et c'est la que ca ne s'affiche plus comme il faut à chaque fois ...

  5. #5
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Appelle la méthode revalidate du conteneur après la suppression et l'ajout.
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  6. #6
    Membre du Club
    Femme Profil pro
    Developpeur
    Inscrit en
    Février 2010
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Developpeur

    Informations forums :
    Inscription : Février 2010
    Messages : 101
    Points : 68
    Points
    68
    Par défaut
    Oui, je l'utilise...
    j'ai essayé validate et revalidate mais c'est qu'apres un autre evenement que ca a l'air de prendre ...
    Je dois avoir trop de trucs dans ma class ...

  7. #7
    Membre du Club
    Femme Profil pro
    Developpeur
    Inscrit en
    Février 2010
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Developpeur

    Informations forums :
    Inscription : Février 2010
    Messages : 101
    Points : 68
    Points
    68
    Par défaut
    AdiGuba, se peut il que ma classe soit trop lourde/longue ? Trops de methodes ?

  8. #8
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par isa911Bis Voir le message
    Le premier passage, pas de soucis, apres je les supprime, puis les recréés et c'est la que ca ne s'affiche plus comme il faut à chaque fois ...
    A quel moment ? On pourrais voir le code correspondant ?


    a++

  9. #9
    Membre du Club
    Femme Profil pro
    Developpeur
    Inscrit en
    Février 2010
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Developpeur

    Informations forums :
    Inscription : Février 2010
    Messages : 101
    Points : 68
    Points
    68
    Par défaut
    Je previens, ca va etre long ....

    J'ai un Frame avec un liste contenant les scenarios, code du click concernant la modification du tableau :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    public void clickjListEnregistrement ()
    		{
     
    		if (tableau == null){
    	    		listOfTextField.clear();		
    	    		listOfButtonE.clear();
    	    		listOfLabelE.clear();
    	    		listOfConstraintsE.clear();
     
    			scroll3.removeAll();
    	    		tableau.removeAll();
    				scroll3.revalidate();
    				tableau.revalidate();
    				tableau.repaint();
    				scroll3.repaint();
    	    		tableau = null;
    	    		javax.swing.JOptionPane.showMessageDialog(null,  "Ok, plus d'objet dans le tableau");
     
    			}
    			else {
    				//Premier passage
    				pourTableau(Initialize.jPanel2);
    			}
     
    			view(Initialize.jPanel2, enregistrementSelect);
     
    		}

  10. #10
    Membre du Club
    Femme Profil pro
    Developpeur
    Inscrit en
    Février 2010
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Developpeur

    Informations forums :
    Inscription : Février 2010
    Messages : 101
    Points : 68
    Points
    68
    Par défaut
    Scroll3 est le scroll de Tableau ainsi défini :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    		public JPanel crééTable2(JPanel jPanel2, int colonnes) {
    			//creation du tableau que s'il n'existe pas
     
    			System.out.println("Colonnes : " + colonnes);
    			if (tableau == null){
    				System.out.println("Colonnes 2 : " + colonnes);
    				tableau = new JPanel();
    				tableau.setPreferredSize(new Dimension((40 * colonnes) + 30, 205));
    				tableau.setLayout(new GroupLayout());
     
    				System.out.println("Tailles : " + listOfConstraintsE.size() + " " + listOfButtonE.size() + " " + listOfLabelE.size() );
     
    				for (int i = 0; i < colonnes; i++)
    				{	
    					// Création des des boutons de positionnement
    					consButtonE = new Constraints(new Leading(i*40, 10, 10), new Leading(200 ,12, 12));
    					listOfConstraintsE.add(consButtonE);
    					tableau.add(getJButtonE(i+1),listOfConstraintsE.get(i));
     
    					// Création des des boutons de couleur
    					tableau.add(getJlabelColorisei(i+1),new Constraints(new Leading(i*40, 10, 10), new Leading(0, 12, 12)) );
    					//tableau.add(getJlabelColorisei(1),new Constraints(new Leading(40, 10, 10), new Leading(0, 12, 12)) );
     
    					System.out.println("Tailles : i : " + i + " " + listOfConstraintsE.size() + " " + listOfButtonE.size() + " " + listOfLabelE.size() );
    				}
     
    				//Pour gérer le click sur tous les boutons créés
    				clickButtonE();
     
    				//Pour les JTextField (qui marche)
    				jTextFieldsTableau(tableau, colonnes);
     
    			}
    	        Initialize.chargePanel2 =true;
     
    			return tableau;
    		}

  11. #11
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    c'est surtout le bordel, on ne s'y retrouve pas. Pourrais-tu commencer par corriger ton code en respectant les conventions java:
    les champs et nom de variable commencent par une minuscule
    les noms de méthode commencent par une minuscule
    Seuls les noms de classes et de constantes commencent par une majuscule.

    Parce que quand on lit ton code, on n'arrive pas à voir si tu manipule des champs statiques ou des instance par endroit, impossible de suivre la logique du code.

  12. #12
    Membre du Club
    Femme Profil pro
    Developpeur
    Inscrit en
    Février 2010
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Developpeur

    Informations forums :
    Inscription : Février 2010
    Messages : 101
    Points : 68
    Points
    68
    Par défaut
    et la methode view :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    public void view(final JPanel jPanel2, String enregistrementSelect)
    		{
    			System.out.println("view");
    			modifComm = false;
    			jTextFieldNameSc.setVisible(true);
    			jLabelNameSc.setVisible(true);
    			jTextFieldNameSc.setText(enregistrementSelect );
    			System.out.println("CrééTable2");
    			String enregistrement= Initialize.EnregistrementInit.getEnregistrement();
    			int numEnregistrement= Initialize.EnregistrementInit.getNumEnregistrement();
    			step =  Initialize.Con.NbreSteps(enregistrement, numEnregistrement );
    			System.out.println("Step : " + 	step);
     
    			//Création du tableau et du Scroll
    			jPanel2.add(crééTable(jPanel2,Step), new Constraints(new Leading(150, 10, 10), new Leading(Initialize.Init.Y(), 12, 12)));
    			System.out.println("Liste : " + listOfButtonE.size());
     
    			// Maj des données affichées dans les JtextField
    			boolean reussi = maJTable(enregistrement, numEnregistrement );
     
    			if (reussi != false){
    				//Maj des couleurs de les boutons (Labels)
    				maJCouleurs(); 
    			}
    			//Maj de la présentation de mes boutons de postionnement
    			maJBoutons();
    			getAfficheDecomposition() ;
     
    			modif= "M";
    			ordre=1;
    			//System.out.println("Ordre 3 : " + ordre);
    			//Met a jour l'affichage en fonction du type de scenario
    			//maJDecomposition(ordre);
     
    			//javax.swing.JOptionPane.showMessageDialog(null,  "Maj Decomp");  
    			jComboBoxDimmerBox.setVisible(true);
    			//scroll3.validate();
    			//tableau.validate();
    			scroll3.revalidate();
    			tableau.revalidate();
     
    			scroll3.repaint();
    			tableau.repaint();
    		}
    Avec
    //javax.swing.JOptionPane.showMessageDialog(null, "Maj Decomp");
    en commentaire, ca ne s'affiche pas, alors que si j'y passe, et clique donc sur OK, tout s'affiche ...

  13. #13
    Membre du Club
    Femme Profil pro
    Developpeur
    Inscrit en
    Février 2010
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Developpeur

    Informations forums :
    Inscription : Février 2010
    Messages : 101
    Points : 68
    Points
    68
    Par défaut
    tchize_, c'est plus clair ?

  14. #14
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Non, du tout, ça doit être la fatigue, mais c'est un spaghetti que je n'arrive pas à suivre. En tout cas je ne vois pas d'appel à jpanel2.validate()

  15. #15
    Membre du Club
    Femme Profil pro
    Developpeur
    Inscrit en
    Février 2010
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Developpeur

    Informations forums :
    Inscription : Février 2010
    Messages : 101
    Points : 68
    Points
    68
    Par défaut
    La décomposition est ainsi :

    Frame (mainFrame), contenant une jTabbedPane (jTabbedPane1)
    Chacun des onglets contient un JPanel, dans l'onglet qui nous interesse : Initialize.jPanel2
    Dans ce JPanel, j'ai entre autre un scroll (Scroll3 créé dans la methode crééTable qui apelle la methode crééTable2) contenant mon JPanel tableau.
    Dans le JPanel tableau il y les JButton de couleurs (methode getJlabelColorisei), les boutons de positionnement (methode getJButtonE) et des JTextField qui affichent des données (methode jTextFieldsTableau).
    Ces methodes sont appelées dans la methode crééTable2 apres avoir été appelé par la methode view

    Je viens de rendre compte d'un truc bizarre, en fait, si j'enleve le Scroll, les composants sont bien la, "visible", mais je ne les vois pas, ou pas tous, par contre quand le passe la souris à l'emplacement où ils doivent etre, ils apparaissent ...

  16. #16
    Membre du Club
    Femme Profil pro
    Developpeur
    Inscrit en
    Février 2010
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Developpeur

    Informations forums :
    Inscription : Février 2010
    Messages : 101
    Points : 68
    Points
    68
    Par défaut
    AdiGuba, en invoquant la méthode isEventDispatchThread() à chaque modification tout est à "true"...

  17. #17
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Au risque de me répéter:
    Citation Envoyé par tchize_ Voir le message
    En tout cas je ne vois pas d'appel à jpanel2.validate()

  18. #18
    Membre du Club
    Femme Profil pro
    Developpeur
    Inscrit en
    Février 2010
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Developpeur

    Informations forums :
    Inscription : Février 2010
    Messages : 101
    Points : 68
    Points
    68
    Par défaut
    tchize_ : Oui, je l'ai rajouté et essayé, désolé de ne pas l'avoir noté, mais ca ne change rien ...
    Je peux toujours tenter chaque niveau ...

  19. #19
    Membre du Club
    Femme Profil pro
    Developpeur
    Inscrit en
    Février 2010
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Developpeur

    Informations forums :
    Inscription : Février 2010
    Messages : 101
    Points : 68
    Points
    68
    Par défaut
    Si au lieu d'utiliser des JButton, j'utilise des JTextField, ca s'affiche correctement meme dans le Scroll ...
    Cela vous évoque quelque chose ?

  20. #20
    Membre du Club
    Femme Profil pro
    Developpeur
    Inscrit en
    Février 2010
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Developpeur

    Informations forums :
    Inscription : Février 2010
    Messages : 101
    Points : 68
    Points
    68
    Par défaut
    J'ai trouvé, j'avais pas supprimé mon scroll de mon panel avec
    Initialize.jPanel2.remove(scroll3);
    apres
    scroll3.removeAll();
    ca marche !!!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 29/04/2011, 10h10
  2. Une boite de dialogue Mot de Passe
    Par ProgElecT dans le forum Vos contributions VB6
    Réponses: 0
    Dernier message: 16/07/2010, 15h03
  3. [OpenOffice][Tableur] selectionner des cellules lorsqu'une boîte de dialogue est ouverte
    Par d.bessonneau dans le forum OpenOffice & LibreOffice
    Réponses: 1
    Dernier message: 29/12/2009, 21h34
  4. [AJAX] Que se passe t'il quand une requête est envoyé ?
    Par whitespirit dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 31/07/2008, 08h28
  5. que se passe-t-il lorsqu'on ferme une application ?
    Par Mihalis dans le forum Delphi
    Réponses: 22
    Dernier message: 13/06/2007, 14h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo