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 :

Adapter la taille d'un JPanel en fonction de son contenu


Sujet :

AWT/Swing Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 18
    Points : 12
    Points
    12
    Par défaut Adapter la taille d'un JPanel en fonction de son contenu
    Bonjour,

    j'ai une JFrame contenant deux JPanel.
    Dans le panel1, je dessine un rectangle contenant lui-même d'autres figures géométriques, et les dimensions de ce rectangle changent à chaque lancement de mon application.

    Si les dimensions de ce rectangle sont "petites", alors on ne peut plus faire la distinction parmi les figures qu'il contient (c'est quasiment illisible !)
    J'ai alors essayé de modifier la taille du panel1 avec setSize(new Dimension(500,600)), mais je ne peux pas le faire à chaque fois que je lance mon application (vu que la taille du rectangle change à chaque fois !!!)

    Voici un (tout petit) extrait de ma classe Panneau1 :

    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
     
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
     
    public class Panneau1 extends JPanel 
    {	
            private JPanel principal;
            (...)
     
    	public CamionDeCoteTmp(JPanel principal)
    	{
                     setSize(new Dimension(850,600));
    		//setSize(new Dimension(400,250)); 
    		//setSize(new Dimension(600,450));
    		setLayout(new GridLayout(1,1));
    		setBackground(Color.CYAN);
     
    		addMouseListener( ....);
     
            }
     
    	public void clicAction(MouseEvent e)
    	{
    		System.out.println("Clic détecté.");
                    //Gestion de l'evenement (affichage d'un nouveau panel etc...)
                    (...)
    	}
     
            public void paintComponent(Graphics g)
    	{
    		super.paintComponent(g);
                    //Dessin du rectangle ainsi que des figures qu'il contient
                    (...)
            }
    Auriez-vous une solution pour "adapter" automatiquement la taille de mon JPanel en fonction de la taille du rectangle (si cela est possible bien sûr) ?

    Merci d'avance.

  2. #2
    Membre émérite
    Avatar de gifffftane
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 354
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 2 354
    Points : 2 582
    Points
    2 582
    Par défaut
    J'ai quelque mal à comprendre ton code, j'ai l'impression qu'il y a des erreurs partout. Si tu pouvais faire un mini-programme exemple qui compile...

    Je te suggère de caler les preferred/minimum/maximumSize du JPanel de ton rectangle à la taille de ce rectangle, et de donner au conteneur de ce JPanel un layout BorderLayout, ou BoxLayout, je pense que ça devrait le faire.
    Mieux que Google, utilisez Sur Java spécialisé sur la plate-forme java !
    Pour réaliser vos applications Java dans le cadre de prestations, forfait, conseil, contactez-moi en message privé.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 18
    Points : 12
    Points
    12
    Par défaut
    Bonsoir gifffftane,

    J'ai quelque mal à comprendre ton code, j'ai l'impression qu'il y a des erreurs partout. Si tu pouvais faire un mini-programme exemple qui compile...
    En fait j'ai plusieurs classes et c'est assez compliqué à faire (vu que je récupère les dimensions des figures à partir d'un fichier de données )

    En résumé : j'ai une Fenêtre "divisée en 2" : en haut, le panel1 (dans lequel je dessine le rectangle), en bas, le panel2 contenant un autre dessin.
    Pour la fenêtre principale :
    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
    import javax.swing.*;
    import java.awt.*;
     
    public class FenetrePrincipale extends JFrame
    {
    	public FenetrePrincipale()
    	{
    		super();
    		build();	//on initialise la fenetre
    	}
     
    	private void build()
    	{
    		setTitle("Géométrie");
    		setSize(850,720);
    		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		setContentPane(buildContentPane());
    	}
     
    	private JPanel buildContentPane()
    	{
    		JPanel panneau_princ = new JPanel();
    		panneau_princ.setLayout(new GridLayout(2,1));
    		panneau_princ.setBackground(Color.RED);
     
    		Panneau1 panneau_haut = new Panneau1 (panneau_princ);
    		panneau_princ.add(panneau_haut );
     
    		return panneau_princ;
    	}
    }
    Ca c'est pour m'occuper du panel1, puis pour le panel2, je m'en occupe dans la classe Panneau1...

    donner au conteneur de ce JPanel un layout BorderLayout, ou BoxLayout
    j'ai essayé avec un BorderLayout, mais alors ma fenetre n'affiche plus le panel2

    Je te suggère de caler les preferred/minimum/maximumSize du JPanel de ton rectangle à la taille de ce rectangle
    J'ai essayé en faisant un setSize(r1.width, r1.height) (où r1 est mon rectangle), c'est beaucoup plus lisible mais du coup ça m'affiche le rectangle en trop grand (toute la surface du JPanel),
    j'aimerais qu'il y ait de l'espace entre r1 et le bord de la fenêtre...
    Comment faire?

    Merci d'avance.

  4. #4
    Membre émérite
    Avatar de gifffftane
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 354
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 2 354
    Points : 2 582
    Points
    2 582
    Par défaut
    J'ai l'impression qu'il te manque pas mal de bases de swing, et que tu ne t'en sortiras pas si tu lis pas quelques docs, par exemple Creating a GUI with JFC/Swing. Tes problèmes de pannel2 qui ne s'affiche pas, par exemple, devraient se résoudre à la lecture de Laying Out Components Within a Container.

    Bonne lecture.
    Mieux que Google, utilisez Sur Java spécialisé sur la plate-forme java !
    Pour réaliser vos applications Java dans le cadre de prestations, forfait, conseil, contactez-moi en message privé.

Discussions similaires

  1. Ajuster la taille d'un graphique en fonction de son contenu
    Par _developpeur_ dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 02/05/2012, 14h45
  2. Ajustement de la taille d'un bloc en fonction de son contenu
    Par stefsas dans le forum Mise en page CSS
    Réponses: 0
    Dernier message: 28/05/2010, 10h58
  3. Réponses: 0
    Dernier message: 23/02/2009, 16h42
  4. Réponses: 5
    Dernier message: 24/04/2008, 09h53
  5. [HTML/CSS] Taille d'un <div> en fonction de son contenu
    Par hedgehog dans le forum Mise en page CSS
    Réponses: 12
    Dernier message: 14/12/2006, 18h57

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