Transmission des paramètres de setBounds

tibule86 Messages postés 6 Date d'inscription dimanche 21 septembre 2008 Statut Membre Dernière intervention 27 septembre 2009 - 20 sept. 2009 à 22:06
uhrand Messages postés 491 Date d'inscription samedi 20 mai 2006 Statut Membre Dernière intervention 15 juillet 2012 - 27 sept. 2009 à 23:10
Bonjour et merci d'avance à ceux qui répondront.
J'ai encore un problème bizarre à soumettre!

Je crée une fenêtre dans laquelle je mets un JPanel (Pan0)
JPanel Pan0 = new JPanel();
Pan0.setLayout(null);

Ensuite je rajoute dans ce JPanel deux autres JPanel (panGauche et panDroite) en les plaçant à l'aide de setBounds:
JPanel panGauche = new JPanel();
panGauche.setBounds(0,0,200,400);
panGauche.add(new PanOption());
Pan0.add(panGauche);

JPanel panDroite = new JPanel();
panDroite.setBounds(200,0,400,400);
panDroite.add(new PanGrille());
Pan0.add(panDroite);

PanGrille() et PanOption() recupèrent la largeur et la hauteur de leur JPanel puis les affichent dans la console. Ils ressemblent à :
public class PanGrille extends JPanel {
public void paintComponent(Graphics g){
int largFen = this.getWidth();
int hautFen = this.getHeight();
System.out.println(largFen+" "+hautFen+"\n");

La console affiche :
10 10
10 10

Pourquoi les paramètres du setBounds ne sont-ils pas transmis?
A voir également:

5 réponses

uhrand Messages postés 491 Date d'inscription samedi 20 mai 2006 Statut Membre Dernière intervention 15 juillet 2012 9
20 sept. 2009 à 23:46
Par défaut, JPanel utilise FlowLayout qui respecte la "preferred size". Tu peux essayer avec BorderLayout:
JPanel panGauche = new JPanel(new BorderLayout());
0
tibule86 Messages postés 6 Date d'inscription dimanche 21 septembre 2008 Statut Membre Dernière intervention 27 septembre 2009
21 sept. 2009 à 00:30
Merci de nouveau de me répondre.

J'ai placé "Pan0.setLayout(null); " pour pouvoir placer moi-même les éléments, ça me semblais la manière la plus simple de gérer deux objets.
J'ai suivi ton conseil et ajouté un BorderLayout et des preferredSize. Malheureusement j'obtiens exactement le même résultat!

Si tu as une explication ou une autre idée je suis preneur...
0
uhrand Messages postés 491 Date d'inscription samedi 20 mai 2006 Statut Membre Dernière intervention 15 juillet 2012 9
21 sept. 2009 à 22:35
J'ai l'impression qu'on ne parle pas du même truc! Tu peux essayer de construire un court exemple indépendant et compilable. En basons notre discussion sur cet exemple, nous sommes sûr de parler de la même chose.
0
tibule86 Messages postés 6 Date d'inscription dimanche 21 septembre 2008 Statut Membre Dernière intervention 27 septembre 2009
27 sept. 2009 à 16:04
Voici l'exemple composé de MainPgr.java et de PanPgr.java :

MainPgr.java :
=======================

import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class MainPgr {
public static void main(String[] args){
int largeur = 200;
int hauteur = 150;

JFrame fen0 = new JFrame();
fen0.setSize(largeur,hauteur);
fen0.setLocationRelativeTo(null);
fen0.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

JPanel pan0 = new JPanel();
pan0.setBounds(0,0,hauteur,hauteur);
pan0.add(new PanPgr());

fen0.setContentPane(pan0);
fen0.setVisible(true);
}
}


PanPgr.java :
====================

import java.awt.Color;
import java.awt.Graphics;

import javax.swing.JPanel;

public class PanPgr extends JPanel {
public void paintComponent(Graphics g){
System.out.println(g.getClipBounds());
g.setColor(Color.BLUE);
g.fillRect(0, 0, 100, 100);
}
}
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
uhrand Messages postés 491 Date d'inscription samedi 20 mai 2006 Statut Membre Dernière intervention 15 juillet 2012 9
27 sept. 2009 à 23:10
import java.awt.*;
import javax.swing.*;
public class MainPgr {
    public static void main(final String[] args) {
        int largeur = 200;
        int hauteur = 150;
        JFrame fen0 = new JFrame();
        fen0.setSize(largeur, hauteur);
        fen0.setLocationRelativeTo(null);
        fen0.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        JPanel pan0 = new JPanel(new BorderLayout());
        pan0.add(new PanPgr());
        fen0.setContentPane(pan0);
        fen0.setVisible(true);
    }
}
class PanPgr extends JPanel {
    @Override
    protected void paintComponent(final Graphics g) {
        System.out.println(g.getClipBounds());
        g.setColor(Color.BLUE);
        g.fillRect(0, 0, 100, 100);
    }
}
0
Rejoignez-nous