2010-01-11 4 views
1

Comment puis-je spécifier l'emplacement sur JFrame qu'un composant (JLabel spécifiquement) est placé? J'ai créé un objet JFrame et ajouté un JLabel et un JList au cadre, mais les deux objets sont placés les uns sur les autres. Je l'ai essayé d'utiliserMise en page des composants jframe

label.setBounds(10,10,10,10);
list.setBounds(20,20,100,100);

et

label.setLocation(10,10);
list.setLocation(10, 50);

Aucune de ces travaillent. Toute aide est appréciée! Merci.

+0

pouvez-vous fournir le code où vous créez les 'JFrame',' JLabel' et 'JList'? –

Répondre

2

En Java, les gestionnaires de mise en page sont utilisés qui déterminent la façon dont seront placés les composants. Vous pouvez trouver plus d'informations sur les gestionnaires de mise en page ici: http://java.sun.com/docs/books/tutorial/uiswing/layout/using.html

Si vous voulez absolument utiliser des coordonnées pour mettre vos composants, vous pouvez essayer:

JFrame frame = new JFrame(); 
frame.setLayout(null); 

Sinon, un très bon éditeur de GUI pour Java est NetBeans qui utilise le GroupLayout par défaut.

+0

La définition du gestionnaire de disposition sur null est la méthode préférée pour utiliser le positionnement absolu lors de la disposition des composants. mais OMI, l'éditeur de GUI pour NetBeans est une vraie douleur et je trouve qu'il est plus facile de ne pas l'utiliser. – ChadNC

+0

L'éditeur d'interface utilisateur NetBeans est excellent et il est actuellement l'un des meilleurs disponibles gratuitement. Apprendre comment les différents LayoutManagers fonctionnent peut être difficile, mais cela en vaudra la peine à la fin. – willcodejavaforfood

1

Layout Managers le fera pour vous.

Avec la mise en page par défaut BorderLayout, essayez

setLayout(new BorderLayout()); 
getContentPane().add(yourLabel, BorderLayout.NORTH); 
getContentPane().add(yourList, BorderLayout.CENTER); 
Questions connexes