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

Agents de placement/Fenêtres Java Discussion :

Récupérer la taille d'un JFrame dans un JPanel


Sujet :

Agents de placement/Fenêtres Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 152
    Points : 64
    Points
    64
    Par défaut Récupérer la taille d'un JFrame dans un JPanel
    Bonjour,

    J'ai une classe héritée de JFrame qui contient une autre classe héritée de JPanel, les deux sont dans des fichiers séparés. J'aimerais pouvoir récupérer la taille de la JFrame pour pouvoir ajuster mes éléments dans mon JPanel si on redimensionne la fenêtre.
    J'ai essayé de mettre le JFrame en argument dans le constructeur de la classe héritée de JPanel mais ça me donne (0,0)... Y a t-il une fonction pour récupérer ces tailles ?

    Merci d'avance.

  2. #2
    Rédacteur

    Avatar de autran
    Homme Profil pro
    Développeur Java
    Inscrit en
    Février 2015
    Messages
    1 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2015
    Messages : 1 241
    Points : 7 653
    Points
    7 653
    Billets dans le blog
    55
    Par défaut
    Si je me souviens bien JFrame possède une méthodes getSize() qui retourne une Dimension.
    Développeur Java
    Site Web

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 152
    Points : 64
    Points
    64
    Par défaut
    Oui c'est ce que j'ai essayé. J'ai mis le JFrame en argument du constructeur du Panel, puis j'ai appellé getSize(), mais ça me retourne 0 pour la hauteur et la largeur de la dimension obtenue

  4. #4
    Rédacteur

    Avatar de autran
    Homme Profil pro
    Développeur Java
    Inscrit en
    Février 2015
    Messages
    1 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2015
    Messages : 1 241
    Points : 7 653
    Points
    7 653
    Billets dans le blog
    55
    Par défaut
    Raikyn,

    Il faut que tu postes ton code pour que l'on voit comment tu passes un objet à l'autre (le JPanel à ton JFrame).

    Postes tes 2 classes dans les balises code et mets nous aussi ton main().

    Marc.
    Développeur Java
    Site Web

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 152
    Points : 64
    Points
    64
    Par défaut
    D'accord, je met juste les constructeurs car il y a presque 800 ligne de code dans ma classe panel :/

    La classe héritée de JFrame :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public class Interface extends JFrame {
     
        private int tailleX, tailleY;
        private AireDeJeu a;
     
        public Interface(int x,int y){ 
        	tailleX = x;
        	tailleY = y;
    AireDeJeu a = new AireDeJeu(this); 
    }
    }
    Classe panel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public class AireDeJeu extends JPanel implements ActionListener,KeyListener,MouseListener { 
    public AireDeJeu(JFrame frame){
        	Dimension d = frame.getSize()
    tailleX=d.getWidth();
    tailleY=d.getHeight();
        } 
    }

  6. #6
    Rédacteur

    Avatar de autran
    Homme Profil pro
    Développeur Java
    Inscrit en
    Février 2015
    Messages
    1 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2015
    Messages : 1 241
    Points : 7 653
    Points
    7 653
    Billets dans le blog
    55
    Par défaut
    Bonjour RAIKYN,

    OK je vois tu aimes les choses un peu abstraites puisque tu construis un objet dans un autre en lui passant les références de la fabrique... tant mieux. Mais ne réinvente pas la roue les Patterns Observer et Factory sont déjà dans Swing.
    Et je pense que tu utilises mal ces patterns.

    En général, la JFrame implémente un Listener qui sert à intercepter les évènement de tous les composants (JButton ...) de tous les JPanels que tu mettras dans ta JFrame. Car là si tu mets n JPanels tu crées n Listener.

    Ensuite, tu appelles une de tes Classes Interface. Evite d'utiliser un mot réservé du langage pour designer une de tes créations.

    Dans ta JFrame, tu crées tailleX, tailleY alors que tu as déjà ces infos via l'objet Dimension que te retournes la méthode getSize()

    Pour en revenir sur l'erreur qui te gêne, si je comprends bien dans ta JFrame si tu fais un tu obtiens 0 comme avec un . Dans le constructeur de ta JFrame ou dans ton main(), as tu invoqué la methode sinon par défaut tout reste à 0.
    Développeur Java
    Site Web

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 152
    Points : 64
    Points
    64
    Par défaut
    Bonsoir,

    Je n'ai pas de problème pour récupérer la taille dans le jframe mais c'est dans le jpanel que j'aimerais pouvoir les récupérer. Sinon j'ai modifié mon programme pour éviter de mettre trop de listener dans une meme classe

  8. #8
    Rédacteur

    Avatar de autran
    Homme Profil pro
    Développeur Java
    Inscrit en
    Février 2015
    Messages
    1 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2015
    Messages : 1 241
    Points : 7 653
    Points
    7 653
    Billets dans le blog
    55
    Par défaut
    Et en faisant les choses plus simplement car je ne comprends pas l'utilité de te compliquer la vie :
    Dans ton JFrame, tu crées ton JPanel AireDeJeu sans reference au JFrame. Et comme tu es dans le JFrame tu as les info disponible en hauteur et largeur.
    Développeur Java
    Site Web

  9. #9
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Citation Envoyé par Raikyn Voir le message
    Bonjour,

    J'ai une classe héritée de JFrame qui contient une autre classe héritée de JPanel, les deux sont dans des fichiers séparés. J'aimerais pouvoir récupérer la taille de la JFrame pour pouvoir ajuster mes éléments dans mon JPanel si on redimensionne la fenêtre.
    D'abord le panel aura la taille que lui attribuera la JFrame, donc pas besoin de référence, regarde la taille de ton JPanel et t'aura toutes les informations donc tu aura besoin.

    Ensuite, ce n'est pas à ton JPanel de disposer les éléments qui sont dedans, c'est le rôle du LayoutManager qui fait déjà très bien ce boulot de redimensionner. T'es occupé de te tripoter la nouille pour réinventer ce qui existe déjà

Discussions similaires

  1. [Débutant] Récupérer la taille des fichiers/dossiers dans une même variable
    Par Bylliboy dans le forum VB.NET
    Réponses: 11
    Dernier message: 18/06/2014, 12h50
  2. Récupérer la taille d'une image dans un canevas
    Par Exca dans le forum Tkinter
    Réponses: 3
    Dernier message: 01/12/2006, 12h23
  3. Récupérer la taille d'une JFrame
    Par ®om dans le forum Agents de placement/Fenêtres
    Réponses: 6
    Dernier message: 24/08/2006, 23h02
  4. [MySQL] Récupérer la taille d'un texte dans la BDD
    Par Death83 dans le forum PHP & Base de données
    Réponses: 14
    Dernier message: 02/08/2006, 21h50
  5. Récupérer la taille d'une image dans un fichier (GIF/JPEG)
    Par SheikYerbouti dans le forum Multimédia
    Réponses: 4
    Dernier message: 12/05/2005, 14h17

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