Téléchargement
illégal
Posez votre question Signaler

Positionner les composants swing avec java [Résolu]

Sabrina - Dernière réponse le 22 déc. 2011 à 15:55
Bonjour ;

J'ai écrit un petit programme pour faire une interface graphique en java:
import java.text.*;
import java.util.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.text.*;
import java.awt.BorderLayout.*;
import javax.swing.table.*;

 
public class Recherche1 extends JFrame {
 //Panel de criteres de recherche
 public JPanel panelRecherche = new JPanel();   BorderLayout());

 
//Champs texte
 public  JTextField champ1 = new JTextField(20);
 
//Boutons
 public JButton Ajouter = new JButton("Ajouter");
     
//ComboBox
 public JComboBox critere = new JComboBox();
  
// *********************** Constructeur par défaut *************************

public Recherche1() {
  
   
  this.getContentPane().add(panelRecherche);
  
  panelRecherche.add(champ1);
  panelRecherche.add(critere);
  panelRecherche.add(Ajouter);
  
  this.setTitle("Fenetre de recherche musicale");  
  
  this.setSize(500, 500);  
  
  this.setVisible(true);
  panelRecherche.setVisible(true);
  
 
  this.show();
  
}

}

Ceci permet d'afficher une fenetre contenant un champ de texte, un bouto et une combo box. J'aimerais positioner ces composants comme je le souhaite, par exemple: mettre le bouton au-dessous des deux autres. J'ai lu de la doc mais je ne trouve pas ce que je cherche, quelqu'un peut-il m'aider svp?

Merci
Lire la suite 

Positionner les composants swing avec java »

11 réponses
Réponse
+13
moins plus
Salut Sabrina,

Si tu veux placer vraiment librement tes objets, tu peux initialiser le layout à null et placer tes composants avec la méthode setBounds (x,y,width,height)

Je ne suis pas un pro dans ce domaine donc essai de voir sur ce lien
http://java.sun.com/j2se/1.3/docs/api/java/awt/Component.html#setBounds(int,%20int,%20int,%20int)

Sinon j'ai aussi entendu dire que le GridBagLayout était assez flexible comme gestionnaire de mise en page.
Tu peux jeter un coup d'oeil la dessus :
http://java.sun.com/j2se/1.4.2/docs/api/java/awt/GridBagLayout.html

Cordialement,

Jon301
Ajouter un commentaire
Réponse
+4
moins plus
Pour utiliser le setBounds(x,y,w,h);
il faut que tu mettes le Layout de ton component(JPanel) à null.
setLayout(null);
Car lorsque tu crées un jpanel il y a un layout par defaut dessus(borderlayout je crois??!!).
Voila :)
Ajouter un commentaire
Réponse
+4
moins plus
Bonjour,

la méthode consistant à utiliser les gestionnaires de positionnement permet :
1) de positionner les composants comme on le souhaite;
2) d'éviter des comportements imprévisibles lors des redimensionnement des composants parents.

Selon les besoins, on utilise les BorderLayout, GridLayout, GridBagLayout, BoxLayout, CardLayout, FlowLayout, et le petit dernier SpringLayout.

Pour un tutoriel bien fait, c'est ici:
http://java.sun.com/docs/books/tutorial/uiswing/layout/index.html

et comme d'habitude la doc sur l'API java est votre ami:
http://java.sun.com/j2se/1.5.0/docs/api/

a+
Ajouter un commentaire
Réponse
+3
moins plus
Il y a de très bons tutoriaux sur Java à cette adresse, dont l'un traite du positionnement des composants:
http://b.kostrzewa.free.fr/java/index.html

Je vous conseille de taper les exemples fournis et de les compiler. Ca permet de mieux assimiler.
Le positionnement des composants Swing n'est guère différent de celui des composants de l'AWT (Abtract Windowing Toolkit).
Ajouter un commentaire
Réponse
+1
moins plus
c'est l'ordre dans lequel tu ajoutes qui fait que tu auras un panel au dessus de l'autre =)
Ajouter un commentaire
Réponse
-1
moins plus
Merci bcp pour ton aide.

J'ai essayé d'utiliser la méthode setBounds comme dans les exemples fournis mais ça ne marche pas. il compile mais à l'exécution, rien ne change. g inséré l'instruction suivante après les add:
champ1.setBounds(10, 10, 100, 100)

Quelqu'un peut-il m'aider svp?

Merci
David - 21 févr. 2005 à 11:36
Salut, j'ai le meme probleme que toi concernant les composants.

J'ai annulé le borderlayout par
getContentPane().setLayout(null)
, je crais mes différents panel et le places.

Pour finir, je crais des boutons et label, que je place dans mes panel, et je veux les replacer comme toi par la méthode
champ1.setBounds(10, 10, 100, 100)
, mais cela ne fonctionne pas.

Est ce que tu connais la solution a ce probleme?

Merci, david
Vlad - 22 déc. 2011 à 15:55
N'oubliez d'ajouter votre champ au JPanel
pan.add(champ);
suivi des instructions pour la JFrame :
pack();
setVisible(true);
Ajouter un commentaire
Réponse
-1
moins plus
Bonsoir,

Il faut utiliser les layout:
BorderLayout, GridLayout, BoxLayout, GridBagLayout etc...
--> Voir la documentation

a+
Ajouter un commentaire
Réponse
-1
moins plus
Bonsoir :

s'il vous plait j'ai un problème concernant la superposition des composants : en faite j'ai deux JPanel que je veux superposer l'un en dessous de l'autre ,le premier contient une image le deuxième contient des boutons et labels qui doivent etre placées sur l'image. Pour le prmeier JPanel c'est bon,j'ai fait une image au fond et j'ai ajouté la Jpanel a ma fenetre,pour le deuxième j l'ai defini et j'ai ajouté les comosants avec setBounds puis j'ai ajouté les deux JPanels a ma fentere.Le problème est que le deuxième JPanel ,plus precisement les comosants qu'il contient boutons,labels n'apparaiisent qu'en survolant la fenetre avec ma souris ?!?!? et si je minimise la fentre tous ces composants disparaissent et ne reste que l'image ?????????

S'il vous plait aidez moi ......
Kouskous - 20 mai 2008 à 11:26
Bonjour Smile,
je ne comprends pas trop ton besoin??? Tu as besoin de superposer un panel avec une image et un autre panel avec tes (labels + boutons)??? Ou bien te faut-il une fenêtre où mettre d'un côté ton image et de l'autre tes (labels + boutons)?
Ajouter un commentaire
Ce document intitulé « Positionner les composants swing avec java » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?