[Java] Repositionnement JLabel dans JPanel

Résolu/Fermé
zzzer Messages postés 907 Date d'inscription dimanche 25 mai 2008 Statut Membre Dernière intervention 3 décembre 2023 - 7 mai 2009 à 17:24
zzzer Messages postés 907 Date d'inscription dimanche 25 mai 2008 Statut Membre Dernière intervention 3 décembre 2023 - 11 mai 2009 à 15:07
Bonjour,


Je rencontre actuellement un petit probleme quant au positionnement d'objets JLabel sur un JPanel : j'ai un Vector, contenant des objets de type NC (classe contenant un JLabel et un Point, representant les coordonnees).

Je place mes JLabel sur le JPanel sans souci, puis, quand j'ai termine, serialize le Vector dans un fichier et quitte l'appliquation.
Le probleme c'est que quand je re-ouvre le fichier, les JLabel sont bien ajoutes au JPanel mais leurs coordonnees ne sont pas du tout respectees : ils sont placees en haut, par defaut.

Voici mon code :
for (int i=0 ; i<components.size() ; i++) {
rightArea.add(Items.getJLabelNo(i));      // ajout des JLabel au JPanel
Items.getJLabelNo(i).setLocation(Items.getCoordNo(i));    // repositionnement des JLabel dans le JPanel
}


Quelqu'un a une idee du probleme ?

Merci d'avance !

A voir également:

3 réponses

zzzer Messages postés 907 Date d'inscription dimanche 25 mai 2008 Statut Membre Dernière intervention 3 décembre 2023 181
7 mai 2009 à 23:52
up!
0
zzzer Messages postés 907 Date d'inscription dimanche 25 mai 2008 Statut Membre Dernière intervention 3 décembre 2023 181
8 mai 2009 à 12:13
Voici un code plus complet, soulevant le meme probleme :


public class Main
{
    public static JPanel jp;
    public static JFrame f;
    public static Vector components = new Vector<JLabel> ();

    public static void main(String[] args)
    {
        f = new JFrame();
        f.setExtendedState(JFrame.MAXIMIZED_BOTH);
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setVisible(true);

        components.add(new JLabel("toto"));
        components.add(new JLabel("tata"));
        components.add(new JLabel("tutu"));

        jp = new JPanel();
        jp.setBackground(Color.GREEN);

        for (int i=0 ; i<components.size() ; i++)
        {
            ((JLabel)components.get(i)).setLocation(i*50,i*50);
            jp.add((JLabel)components.get(i));
        }
        f.add(jp);
    }
}


Merci d'avance...

0
zzzer Messages postés 907 Date d'inscription dimanche 25 mai 2008 Statut Membre Dernière intervention 3 décembre 2023 181
11 mai 2009 à 15:07
Resolu : il me fallait mettre le layout manager a null :

frame.setLayout(null);

0