IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AWT/Swing Java Discussion :

Placer des objets avec swing


Sujet :

AWT/Swing Java

  1. #1
    Membre à l'essai
    Inscrit en
    Février 2006
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 21
    Points : 17
    Points
    17
    Par défaut Placer des objets avec swing
    bonjour,
    J'essaie de créer une interface sous swing avec un tas de boutons et de textes. Pour les positionner, j'ai pensé les placer avec la commande setLocation, mais elle ne semble pas fonctionner. Lorsque j'ajoute cette commande dans la fonction qui crée l'objet, elle ne fait absolument rien. Par contre, lorsque la la place dans un autre événement déclenché par un bouton, l'objet est déplacé.

    Donc la commande suivante place l'objet n'importe où
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    bouton = new JButton();
    bouton.setPreferredSize(new Dimension(100,20));
    bouton.setText("cliquer ici pour faire planter le programme");
    bouton.addActionListener(this);
    bouton.setLocation(50,50);
    container.add(bouton);
    bouton.setLocation(50,50);
    alors que celle-ci déplace un bouton déjà placé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public void actionPerformed(ActionEvent e)
    {
    bouton.setLocation(50,50);
    }
    Est-ce qu'il y a un autre moyen de placer mes objets sans problème ??????

    En passant j'ai appris le swing avec le tutoriel "Création de votre première interface graphique avec Swing ", mais is n'est pas vraiment complet. Est-ce que quelqu'un connait un meilleur tutoriel pour swing ? (en français de préférence, mais il peut être en anglais s'il y en a pas en français)

  2. #2
    Membre à l'essai
    Inscrit en
    Février 2006
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 21
    Points : 17
    Points
    17
    Par défaut
    je peux même ajouter que dès que je change le texte écrit dans un des objets, les objets se replacent automatiquement au mauvais endroit

  3. #3
    Rédacteur
    Avatar de eclesia
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    2 108
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 108
    Points : 3 203
    Points
    3 203
    Par défaut
    ce n'est pas le composant qui choisi la ou il doit être.
    Cette tache est géré par le LayoutManager du panneau qui le contient.

    les setLocation(),setSize(), setBounds ne marchent que si le layout est a null.

    cf : http://jmdoudoux.developpez.com/java/

    exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    JPanel pan = new JPanel();
    pan.setLayout(null)
    ....
    pan.add(monbutton);
    Systèmes d'Informations Géographiques
    - Projets : Unlicense.science - Apache.SIS

    Pour un monde sans BigBrother IxQuick ni censure RSF et Les moutons

  4. #4
    Membre à l'essai
    Inscrit en
    Février 2006
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 21
    Points : 17
    Points
    17
    Par défaut
    bonjour,
    J'ai bien essayé d'enlever le layout, mais tous les objets disparaissaient alors. Comment dois-je procéder pour les afficher lorsque le layout est à null?

  5. #5
    Rédacteur
    Avatar de eclesia
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    2 108
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 108
    Points : 3 203
    Points
    3 203
    Par défaut
    montre le morceau de code, ca ira plus vite
    Systèmes d'Informations Géographiques
    - Projets : Unlicense.science - Apache.SIS

    Pour un monde sans BigBrother IxQuick ni censure RSF et Les moutons

  6. #6
    Membre à l'essai
    Inscrit en
    Février 2006
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 21
    Points : 17
    Points
    17
    Par défaut
    Bonne idée ! Voici le code d'une fenêtre avec un bouton qui ne s'affiche pas.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    import javax.swing.*;
    import java.awt.Dimension;
     
    public class Test extends JFrame
    {
        private JPanel container = null;
        private JButton ti_bouton = null;
     
     
        public Test()
        {
    	super();
    	build();
        }
     
     
        private void build()
        {
    	this.setTitle("Programme");
    	this.setSize(640,480);
    	this.setLocationRelativeTo(null);
    	this.setResizable(false);
    	this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    	this.setContentPane(createContainer());
        }
     
        private JPanel createContainer()
        {
    	container = new JPanel();
    	container.setLayout(null);
    	ti_bouton = new JButton();
    	ti_bouton.setPreferredSize(new Dimension(50,25));
    	ti_bouton.setText("texte");
    	ti_bouton.setLocation(100,100);
    	container.add(ti_bouton);
    	return container;
        }
     
        public static void main(String[] args)
        {
    	Test fenetre = new Test();
    	fenetre.setVisible(true);
        }
    }

  7. #7
    Rédacteur
    Avatar de eclesia
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    2 108
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 108
    Points : 3 203
    Points
    3 203
    Par défaut
    je comprends pourquoi ca ne marche pas

    tu te trompe juste de methode :
    utilise setSize et non setPreferredSize

    comme son nom l'indique setPreferredSize donne la taille préféré du composant. Mais cette taille n'est utilisé que par les layout manager afin placer les composants au mieux.

    Etant donné que tu n'utilises pas de layout (layout null) tu dois utiliser la methode setSize().


    petit plus :
    tu peux faire un setsize et un setLocation en meme temps avec la methode setBounds()

    bonne continuation
    Systèmes d'Informations Géographiques
    - Projets : Unlicense.science - Apache.SIS

    Pour un monde sans BigBrother IxQuick ni censure RSF et Les moutons

  8. #8
    Membre actif

    Étudiant
    Inscrit en
    Mai 2006
    Messages
    200
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2006
    Messages : 200
    Points : 276
    Points
    276
    Par défaut
    Bonsoir,

    tu peux utiliser cette méthode en remplacement de setLocation :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void setBounds(int x, int y, int width, int height)
    Et pour ce qui est de savoir pourquoi la méthode setLocation ne marche pas je ne peux pas te répondre, chez moi aussi ca ne me place pas le composant et je ne comprend pas pourquoi. Si quelqu'un pouvait repondre à cette question ce serait bien !

    Ah béh ca y est eclesia vient de donner la reponse pendant que je rédigais. En effet c'est tout a fait ca, avec un setSize ca marche nikel !!!

  9. #9
    Membre à l'essai
    Inscrit en
    Février 2006
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 21
    Points : 17
    Points
    17
    Par défaut
    Ah ! merci eclésia (et floflo aussi), ça fonctionne maintenant.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. programme graphique pour placer des objets avec paramètres
    Par Mickarrera dans le forum Visual Studio
    Réponses: 0
    Dernier message: 07/12/2012, 20h22
  2. faire des formes avec swing
    Par ronki dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 16/09/2007, 23h47
  3. Créer des objets avec Java Monkey Engine
    Par ToTo13 dans le forum 3D
    Réponses: 3
    Dernier message: 31/07/2007, 15h06
  4. Afficher des éléments avec swing
    Par ToTo13 dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 05/04/2007, 16h45
  5. [FLASH] Déplacement des objets avec clavier ???
    Par 3adoula dans le forum Flash
    Réponses: 1
    Dernier message: 07/01/2006, 01h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo