Wytt
Messages postés3Date d'inscriptionvendredi 5 mars 2004StatutMembreDernière intervention20 juin 2005
-
24 nov. 2004 à 21:27
TheOnly
Messages postés12Date d'inscriptionmardi 17 septembre 2002StatutMembreDernière intervention 6 janvier 2006
-
18 mars 2005 à 00:49
Bonjour,
Je cherche à créer dynamiquement un JPanel dans lequel je veux disposer à l'aide d'un GridLayout(par exemple) d'autres JPanel.
J'ai créé une petite applet pour mettre en évidence mon problème : j'ai un JTextField et un JButton, et lorsque l'on clique sur le bouton ca doit créer un pnl en dessous avec un gridLayout et ajouter à celui-ci autant de panel qu'indiqué dans le textField.
Pour que le spanels soient bien ajoutés dynamiquement, je suis obligé d'utiliser la méthode ".setBounds" (comme s'il n'y avait pas de layout alors que le but d'un layout entre autres et notament de gérer les problèmes de disposition).
Donc voilà je ne comprends pas trop pourquoi cela ne marche que lorsque jutilise la méthode "setBounds" que ce soit sans layout ou avec...
Voici le code appelé par lorsqu'on clique sur le bouton pour créer dynamiquement le panel "pnlBas":
public void construirePnlBas()
{
this.pnlBas = new JPanel(new GridLayout(0,1));
this.pnlBas.setBounds(this.pnlFond.getX(),this.pnlCentre.getY()+this.pnlCentre.getHeight(),
pnlFond.getWidth(),pnlFond.getHeight()-pnlHaut.getHeight()-pnlCentre.getHeight());
this.pnlBas.setBackground(Color.red);
this.pnlBas.setBorder(BorderFactory.createTitledBorder("PnlBas"));
JPanel[] tabPnlBas = new JPanel[nombre];
for (int i=0;i<tabPnlBas.length;i++)
{
tabPnlBas[i] = new JPanel();
//tabPnlBas[i].setBounds(i*100,i*50,200,50);
tabPnlBas[i].setBackground(Color.black);
tabPnlBas[i].setBorder(BorderFactory.createTitledBorder("Label "+i));
this.pnlBas.add(tabPnlBas[i]);
this.pnlBas.repaint();
}
this.pnlFond.add(pnlBas);
this.pnlFond.repaint();
}
Madvin
Messages postés123Date d'inscriptionmardi 5 août 2003StatutMembreDernière intervention26 août 20123 20 déc. 2004 à 02:18
Salut,
c'est tout simplement parce que l'application ne recalcule pas à partir de la base de la hiérarchie de tes composants la disposition de ceux-ci. Pour cela, il faut que tu rappelles, après avoir effectué toutes les modifications de ton panel (ajouts+suppressions), la méthode pack() sur ta fenêtre principale.
Cette méthode s'applique aux instances de la classe Window(comme les Frame ou les JFrame).
Par contre pour les applets je ne sais pas comment on fait. Désolé.