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 :

Taille jpanel et coordonnées pour dessiner


Sujet :

AWT/Swing Java

  1. #1
    Membre habitué Avatar de Willy55
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    188
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 188
    Points : 131
    Points
    131
    Par défaut Taille jpanel et coordonnées pour dessiner
    Bonjour,

    J'ai un soucis assez précis et bizarre :

    En effet j'ai une JFrame d'une taille précise de 1000px en largeur et 700px en hauteur, divisée en 2 parties sur la largeur. Un bandeau au dessus de 100px de hauteur et un autre pour le contenu de 600 px de haut.

    Comme ceci :



    Les jpanel sont en borderlayout et ont une taille fixées, minimumSize, MaximumSize, preferedSize, je les ai toutes mise pour être sur.

    En tout cas lorsque je fais jpanel2.getSize j'ai bien ma hauteur de 600 et ma largeur de 1000

    Le soucis c'est lorsque je veux dessiner dans ce jpanel2 :

    Je fais un g.fillRect(0, 0, 5, 5) j'ai bien un rectangle aux coordonnées 0,0 du jpanel2 mais si je fais g.fillRect(0, 600, 5, 5) je sors deja du jpanel2, après test je ne peux aller que jusqu'a g.fillRect(0, 542, 5, 5) ???

    C'est incompréhensible mon jpanel fait bien 600 px de haut quand je fais un getSize mais je ne peux dessiner que jusqu'a 542px de hauteur ! Pourquoi

    Merci de votre aide...

  2. #2
    Membre habitué
    Homme Profil pro
    Ingénieur Informatique et Réseaux
    Inscrit en
    Avril 2011
    Messages
    232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Informatique et Réseaux
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 232
    Points : 182
    Points
    182
    Par défaut
    Ton panel fait 600 px de hauteur donc si tu dessines g.fillRect(0, 600, 5, 5)
    il va se mettre dans le coin inférieur gauche du panel et dessiner un rectangle de 5 vers la droite puis 5 vers le bas. Donc normal que le dessin sorte du panel.

    Après pour le fait de pouvoir dessiner qu'à ceci : g.fillRect(0, 542, 5, 5) c'est bizarre en effet, tu devrais pouvoir g.fillRect(0, 595, 5, 5) normalement.

    Refais quelques tests et reviens vers nous après.

  3. #3
    Membre habitué Avatar de Willy55
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    188
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 188
    Points : 131
    Points
    131
    Par défaut
    Bonjour, merci de votre réponse,

    En effet je pensais bien a g.fillRect(0, 595, 5, 5) quand je parlais du bas du panel mais la avec g.fillRect(0, 542, 5, 5) mon carré apparait a l'endroit ou il devrai etre a 595, je n'ai pas vraiment plus de tests a faire je ne comprend pas pourquoi...

    Il y a une différence entre la taille que me retourne getsize du jpanel : 600 et la position de g.fillRect(0, 542, 5, 5) qui touche le bord du bas tout en sachant que g.fillRect(0, 5, 5, 5) est bien au bord du haut donc commence bien en haut du jpanel en question... un vrai casse tête...

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 312
    Points : 533
    Points
    533
    Par défaut
    Essayes ce code et vérifie que la hauteur de panel2 est bien de 700. Car si tu donnes a ton JFrame une taille (1000,700) tu perds un peu à cause du bandeau du haut de ton JFrame.
    moi j'obtiens:
    width: 1000
    height: 578

    tu remarqueras egalement que setPreferredSize, MinimumSize ou MaximumSize sont inopérants avec un BorderLayout car tes Panels se redimensionnent à la taille de la fenetre même quand tu redimensionne ton JFrame.


    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
     
    import javax.swing.*;
    import java.awt.*;
     
    public class Fram extends JFrame{
     
    	public Fram() {
    		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		setSize(1000,700);
    		JPanel panel1 = new JPanel();
    		JPanel panel2 = new JPanel();
    		panel1.setPreferredSize(new Dimension(1000,100));
    		panel1.setMinimumSize(new Dimension(1000,100));
    		panel1.setMaximumSize(new Dimension(1000,100));
    		panel2.setPreferredSize(new Dimension(1000,600));
    		panel2.setMinimumSize(new Dimension(1000,600));
    		panel2.setMaximumSize(new Dimension(1000,600));
    		panel1.setBackground(Color.red);
    		panel2.setBackground(Color.blue);
    		add(panel1,BorderLayout.NORTH);
    		add(panel2,BorderLayout.CENTER);
    		setVisible(true);
    		System.out.println("width: " + panel2.getWidth());
    		System.out.println("height: " + panel2.getHeight());
     
    	}
    	public static void main(String[] args) {
    		Fram ff = new Fram();
    	}
    }

  5. #5
    Membre habitué Avatar de Willy55
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    188
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 188
    Points : 131
    Points
    131
    Par défaut
    Bonjour,

    C'est exactement ça, vous avez raison, j'ai changé la propriété de ma jFrame en "resizable" pour voir et dès que je peux baisser la fenêtre je vois le reste du jPanel.

    Ce qui est drôle c'est que vous pour 600 il vous affiche quand même 578 alors que moi la fonction getwidth() me revoyais quand même 600 alors qu'elle ne faisait que 542

    Mais bon problème résolu quand même,

    Merci pour votre aide !

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

Discussions similaires

  1. Listener pour dessins dans un JPanel
    Par Nergaahl dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 05/06/2007, 12h05
  2. probleme pour dessiner dans un JPanel
    Par L4BiN dans le forum AWT/Swing
    Réponses: 9
    Dernier message: 02/08/2006, 15h01
  3. Réponses: 7
    Dernier message: 04/06/2006, 17h00
  4. Réponses: 7
    Dernier message: 01/04/2006, 18h05
  5. [debutant] Probleme pour dessiner un simple cube
    Par scorpiwolf dans le forum DirectX
    Réponses: 6
    Dernier message: 02/07/2003, 20h29

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