[Java] Repositionnement JLabel dans JPanel

Résolu
zzzer Messages postés 938 Statut Membre -  
zzzer Messages postés 938 Statut Membre -
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 938 Statut Membre 181
 
up!
0
zzzer Messages postés 938 Statut Membre 181
 
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 938 Statut Membre 181
 
Resolu : il me fallait mettre le layout manager a null :

frame.setLayout(null);

0