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 :

Problème de changement de Layout dans JPanel


Sujet :

Agents de placement/Fenêtres Java

  1. #1
    Membre à l'essai
    Inscrit en
    Août 2007
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 16
    Points : 12
    Points
    12
    Par défaut Problème de changement de Layout dans JPanel
    Bonjour,

    J'ai une classe (monJP) héritant de JPanel. J'applique à cet objet un TableLayout (3 colonnes, 1 ligne). Le problème est que cet objet me sert à afficher un nombre de ligne inconnu à sa création (et variable au cours la vie de l'objet). Pour cela, je pensais pouvoir changer le TableLayout pour y ajouter des lignes et insérer mes objets swing. Le problème est que quand je change le Layout (setLayout(monNouveauLayout)) cela m'efface tous mes objets graphiques.

    En cherchant sur google, je n'ai rien trouvé qui interdise de changer un lajout sur un JPanel ...

    Voici une version simplifiée de mon code :

    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
     
    public class MonJP extends JPanel {
     
    	public MonJP() {
    		super();
    		cols = new double[] { TableLayout.FILL, // 0
    				TableLayout.FILL, // 1
    				TableLayout.FILL // 2
    		};
     
    		double[] rows = new double[]{20};
     
    		sizes = new double[][] { cols, rows };
    		setLayout(new TableLayout(sizes));
     
    		add(new JLabel("FOO"),"0,0");
                    //Le programme marche tres bien jusque là
     
                    rows = new double[]{20,20};
    		size = new double[][] { cols, rows };
    		setLayout(new TableLayout(size));
    		add(new JLabel("BAR"),"0,1");
                    //Apres execution du code precedent
                    //je n'ai plus aucun objet graphique
     
    		this.setPreferredSize(new Dimension(500,500));
    	}
    }
    Merci de m'aider à trouver une solution à mon problème.

    Pour info, je ne peux pas utiliser de JTable.

  2. #2
    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
    En effet, rien n'empêche de changer le layout d'un composant.

    Toutefois tous les composants fils ayant été ajoutés précédemment utilisaient un système de contraintes conservé par l'ancien layout. Ce qui fait que le nouveau Layout n'a pas la moindre idée de comment les positionner, et de fait ne les affiche pas.

    Simple et efficace.


    De fait le TableLayout possède des méthodes du nom d'insertRow, insertColumn, deleteRow et deleteColumn.

    Donc à toi de garder une référence sur le TableLayout et d'ajouter/retirer des lignes/colonnes à ta convenance.

    cf javadoc: http://java.sun.com/products/jfc/tsc...bleLayout.html
    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.

  3. #3
    Membre à l'essai
    Inscrit en
    Août 2007
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 16
    Points : 12
    Points
    12
    Par défaut
    Bonjour,

    Merci pour cette réponse. Je ne connaissais pas ces méthodes.
    Ca marche.

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

Discussions similaires

  1. Problème de changement de variable dans un menu
    Par ahmedpa dans le forum JSF
    Réponses: 0
    Dernier message: 15/06/2015, 16h51
  2. Problème de dessin de figure dans JPanel
    Par agent24 dans le forum Débuter
    Réponses: 2
    Dernier message: 10/12/2012, 11h23
  3. [AC-2007] Problème de changement de recordsource dans un état
    Par kek's dans le forum IHM
    Réponses: 2
    Dernier message: 22/05/2012, 10h41
  4. Changement de layout dans une requête
    Par ac264 dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 01/10/2007, 12h48
  5. Problème avec l'insertion d'une image dans JPanel
    Par anutka dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 16/03/2006, 10h02

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