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

Composants Java Discussion :

JButton ne s'affiche pas


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    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
    Par défaut JButton ne s'affiche pas
    Bonjour,

    J'ai des composants que je créé, puis supprime et recréé selon mes besoins.
    Quand le fais avec des JTextField, pas de soucis.
    Par contre avec des JButton, je ne les vois pas il y sont (pas d'erreur en les appelants), il sont "Visible" mais n'apparaissent pas...
    En remplacant dans le code leur type de JButton à JTextField, je les vois, mais leur réaction n'est pas la même qu'un bouton ...

    A quoi peut etre du ce probleme et comment le contourner ?

  2. #2
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    Sans le code, ça va être difficile de t'aider
    Donne un exemple simple qui reproduit le problème.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  3. #3
    Membre confirmé
    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
    Par défaut
    Je vais essayer, le probleme c'est que le code est reparti entre plusieurs classes ...

    Alors la création de mon Panel :

    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
     
    tableau = new JPanel();
    tableau.setPreferredSize(new Dimension((40 * Colonnes) + 30, 205));
    tableau.setLayout(new GroupLayout());
    for (int i = 0; i < Colonnes; i++)
    {                    
        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));
     
        Constraints cont;
        cont = new Constraints(new Leading(i*40, 10, 10), new Leading(0, 12, 12));
        tableau.add(getJlabelColorisei(i+1),cont );
        System.out.println("i : " + i + " " + listOfConstraintsE.size() + " " + listOfButtonE.size() + " " + listOfLabelE.size() );
     
    }
    La création de mes composants :
    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
     
    public JTextField getJButtonE(int num) {
     ButtonE = new JTextField();
     ButtonE.setPreferredSize(new Dimension(40, 10));
     ButtonE.setName("ButtonE" + num);
     ButtonE.setVisible(true);
     listOfButtonE.add(ButtonE);;
     return ButtonE;
    }
     
     
    public JTextField getJlabelColorisei(int i) {
     labelColorisei = new JTextField("");
     labelColorisei.setPreferredSize(new Dimension(40, 25));
     labelColorisei.setName("labelColorise" + i);
     labelColorisei.setBorder(null);
     labelColorisei.setVisible(true);
     listOfLabelE.add(labelColorisei);
     return labelColorisei;
    }
    Pour mettre à jour les boutons de selection

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public void MaJBoutons() { 
    for(  JTextField Objet3 : listOfButtonE)
     {
       Objet3.setBackground(null);
     }
    listOfButtonE.get(Ordre-1 ).setBackground(Color.RED);
    }
    Pour mettre à jour les couleurs :

    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
    public void MaJCouleurs() {
    for(  JTextField Objet3 : listOfLabelE)
     {
      Objet3.setVisible(false);
     }
     
    for ( int enr3 = 1; enr3 <Nombre ; enr3++) { 
     int alphaValue = 255;
     Color couleur;
     if ((tab [enr3][1]!=null) && (tab [enr3][2]!=null) && (tab [enr3][3]!=null)){
         couleur = new Color(Integer.parseInt(tab [enr3][1].trim() ), Integer.parseInt(tab [enr3][2].trim() ), Integer.parseInt(tab [enr3][3].trim()),alphaValue);
         System.out.println("couleur " + enr3);
         listOfLabelE.get(enr3-1).setBackground(couleur);
         listOfLabelE.get(enr3-1).setVisible(true);
    }}
    Premier passage, pas de probleme tout s'affiche, apres, pour les autres passages si besoin, je fais ca avant de lancer le code precedent :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    listOfTextField.clear();        
    listOfButtonE.clear();
    listOfLabelE.clear();
    listOfConstraintsE.clear();
    tableau.removeAll();
    tableau = null;
    Ca donne ca normalement :


    Je sais pas si c'est plus clair et si ca avance grand chose ...

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

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Fais un appel à la méthode revalidate du conteneur une fois les boutons ajoutés.

  5. #5
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 209
    Billets dans le blog
    52
    Par défaut
    Tu réutilise toujours la même référence pour chaque JButton :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public JButtongetJButtonE(int num) {
     JButton current = new JButton();
     current .setPreferredSize(new Dimension(40, 10));
     current .setName("ButtonE" + num);
     listOfButtonE.add(current);;
     return current;
    }
    Comme cela ça devrait fonctionné un peu mieux.

    Cordialement,
    Patrick Kolodziejczyk.
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

  6. #6
    Membre confirmé
    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
    Par défaut
    revalidate ne fait rien de plus ...
    Et pour la référence pareil ... pas mieux ...

  7. #7
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 209
    Billets dans le blog
    52
    Par défaut
    Sachant que je ne dispose pas de votre classe Leading, j'ai dû supprimer votre layout pour le remplace un plus simple.

    Voici un code que vous pouvez exécuter pour comprendre le tout.
    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
    57
    58
    59
    60
    61
    import java.awt.Dimension;
    import java.awt.GridLayout;
    import java.util.ArrayList;
    import java.util.List;
     
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.JTextField;
    import javax.swing.SpringLayout.Constraints;
     
    public class MyFrame extends JFrame {
    	/**
             * 
             */
    	private static final long serialVersionUID = 1L;
    	private static final int Colonnes = 5;
    	private List<JButton> listOfButtonE = new ArrayList<JButton>();
    	private List<JTextField> listOfLabelE = new ArrayList<JTextField>();
    	private List<Constraints> listOfConstraintsE = new ArrayList<Constraints>();
     
    	public MyFrame() {
    		this.setDefaultCloseOperation(EXIT_ON_CLOSE);
    		JPanel tableau = new JPanel();
    		tableau.setPreferredSize(new Dimension((40 * Colonnes) + 30, 205));
    		tableau.setLayout(new GridLayout(Colonnes,2));
    		for (int i = 0; i < Colonnes; i++) {
    			tableau.add(getJButtonE(i));
    			tableau.add(getJlabelColorisei(i + 1));
     
    			System.out.println("i : " + i + " " + listOfConstraintsE.size()
    					+ " " + listOfButtonE.size() + " " + listOfLabelE.size());
     
    		}
    		this.add(tableau);
    	}
     
    	public JButton getJButtonE(int num) {
    		JButton ButtonE = new JButton();
    		ButtonE.setPreferredSize(new Dimension(40, 10));
    		ButtonE.setText("Button: "+ num);
    		ButtonE.setName("ButtonE" + num);
    		ButtonE.setVisible(true);
    		listOfButtonE.add(ButtonE);
    		;
    		return ButtonE;
    	}
     
    	public JTextField getJlabelColorisei(int i) {
    		JTextField labelColorisei = new JTextField();
    		labelColorisei.setPreferredSize(new Dimension(40, 25));
    		labelColorisei.setText("labelColorise: "+ i);
    		labelColorisei.setName("labelColorise" + i);
    		labelColorisei.setBorder(null);
    		listOfLabelE .add(labelColorisei);
    		return labelColorisei;
    	}
    	public static void main(String[] args) {
    		new MyFrame().setVisible(true);
    	}
    }
    Cordialement,
    Patrick Kolodziejczyk.
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

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

Discussions similaires

  1. [JTable] les noms des colonnes de s'affichent pas
    Par macben dans le forum Composants
    Réponses: 6
    Dernier message: 25/04/2008, 11h03
  2. Le résultat de Print ne s'affiche pas...
    Par Red Bull dans le forum Langage
    Réponses: 9
    Dernier message: 15/06/2006, 18h56
  3. Réponses: 3
    Dernier message: 22/03/2004, 16h49
  4. Les classes ne s'affichent pas
    Par karl3i dans le forum MFC
    Réponses: 8
    Dernier message: 26/01/2004, 14h52
  5. [MFC] Ces fenêtres qui ne s'affichent pas..
    Par Davide dans le forum MFC
    Réponses: 3
    Dernier message: 19/11/2003, 11h30

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