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 :

Redimensionnement composants d'un panel


Sujet :

Agents de placement/Fenêtres Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 60
    Points : 44
    Points
    44
    Par défaut Redimensionnement composants d'un panel
    Bonjour,

    Je suis actuellement en train de développer une IHM et j'ai un petit souci avec mes panels.

    Je souhaiterais que lorsque je diminue la fenêtre de mon appli, les composants de mes panels soient tous toujours visibles mais de tailles plus réduite.
    Pour l'instant quand je diminue la taille de ma fenêtre, les boutons de mes panels disparaissent au fur et à mesure que je réduis ma fenêtre.

    un exemple de code simple qui me pose problème :
    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
     
     
    import java.awt.Dimension;
    import java.awt.GridLayout;
     
    import javax.swing.JButton;
    import javax.swing.JPanel;
     
    public class testClass extends JPanel{
     
    	private JPanel mainPanel;
    	private JButton button1;
    	private JButton button2;
    	private JButton button3;
    	private JButton button4;
     
     
    	public testClass() {
    		// TODO Auto-generated constructor stub
     
     
    		mainPanel = new JPanel();
    		add(mainPanel);
    		button1 = new JButton("bouton1");
    		button2= new JButton("bouton2");
    		button3= new JButton("bouton3");
    		button4= new JButton("bouton4");
    		button1.setMinimumSize(new Dimension(15,15));
    		mainPanel.setLayout(new GridLayout(1,4));
     
    		mainPanel.add(button1);
    		mainPanel.add(button2);
    		mainPanel.add(button3);
    		mainPanel.add(button4);
     
     
    	}
     
    }
    Plus je réduis ma fenêtre plus les boutons 1 ,2 3 et 4 disparaissent. Je veux qu'ils soient toujours visibles même si ils sont de taille minuscule.

    merci

  2. #2
    Membre expérimenté
    Avatar de visiwi
    Profil pro
    Inscrit en
    Février 2008
    Messages
    1 050
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 1 050
    Points : 1 340
    Points
    1 340
    Par défaut
    Salut,

    Tu as encapsuler ton panel testClass dans un autre panel mainPanel, qui lui n'a pas de layout, du coup tu court-circuite l'utilisation du GridLayout. En supprimant ce mainPanel qui d'ailleurs ne sert à rien cela va mieux.
    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
    import java.awt.GridLayout;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
     
     
    public class Test extends JFrame {
     
    	/**
             * @param args
             */
    	public static void main(String[] args) {
    		Test t = new Test();
    		t.setContentPane(new testClass());
    		t.pack();
    		t.setVisible(true);
    	}
     
    }
    class testClass extends JPanel{
     
    	private JButton button1;
    	private JButton button2;
    	private JButton button3;
    	private JButton button4;
     
     
    	public testClass() {
    		button1 = new JButton("bouton1");
    		button2= new JButton("bouton2");
    		button3= new JButton("bouton3");
    		button4= new JButton("bouton4");
     
    		setLayout(new GridLayout(1,4));
     
    		add(button1);
    		add(button2);
    		add(button3);
    		add(button4);		
    	}
     
    }
    Sinon il existe des projets qui permettent une mise à l'échelle des comosants, comme JXTransformer. Tu a une démo ici (utilise la réglette scale).

  3. #3
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 840
    Points : 22 854
    Points
    22 854
    Billets dans le blog
    51
    Par défaut
    Utilises un JXTransformer, tu pourras effectuer des opérations de zoom sur ton sous-composant tout en le gardant fonctionne.

    EDIT - oups grilled, j'avais pas lu le message précédent jusqu'à la fin.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  4. #4
    Membre expérimenté
    Avatar de visiwi
    Profil pro
    Inscrit en
    Février 2008
    Messages
    1 050
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 1 050
    Points : 1 340
    Points
    1 340
    Par défaut
    Citation Envoyé par bouye Voir le message
    oups grilled, j'avais pas lu le message précédent jusqu'à la fin.
    Y a pas d'mal bouye, tout cela est à mettre sur le compte de l'enthousiasme et de l'énergie que tu impulse au forum
    @+

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 60
    Points : 44
    Points
    44
    Par défaut
    Salut,

    merci de vos réponses.

    En fait j'avais mis un panel dans un panel car cela correspond concrètement au code de mon application, je travaille sur une appli open source assez grosse et j'ai donc créé un exemple plus simple qui corresponde au problème qui m'est posé.

    J'ai remarque qu'effectivement sur je met un setLayout(new GridLayout(1,4)) dans le constructeur de testClass cela marche bien et le layout du mainPanel n'est pas court circuité. Le fonctionnement colle bien à ce que je veux.

    Par contre si je mets un BorderLayout à la place du GridLayout cela ne marche plus comme je le veux. J'en déduis que seul le gridLayout permet de garder tous les composants à l'écran lors d'une réduction. Est -ce cela?

    Je ne peux pas utiliser un projet TXTransformer car je modifie un projet déjà existant

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 60
    Points : 44
    Points
    44
    Par défaut
    J'ai essayé quelques trucs,

    Si je met mon gridLayout dans la partie center d'un borderLayout alors les composants du gridlayout sont toujours visibles même quand je réduis la taille de la fenêtre.

    Par contre si je mets mon gridlayout dans l'une des autres régions (North, West, SOuth, East) alors les composants du gridlayout disparaissent quand je réduis la fenêtre.

    Pourquoi? Comment faire pour que les composants de la région North ne disparaissent pas ?

  7. #7
    Membre expérimenté
    Avatar de visiwi
    Profil pro
    Inscrit en
    Février 2008
    Messages
    1 050
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 1 050
    Points : 1 340
    Points
    1 340
    Par défaut
    Citation Envoyé par lilmeth Voir le message
    Par contre si je mets un BorderLayout à la place du GridLayout cela ne marche plus comme je le veux. J'en déduis que seul le gridLayout permet de garder tous les composants à l'écran lors d'une réduction. Est -ce cela?
    Non. Mais pour un BorderLayout, seul la case BorderLayout.CENTER sera agrandi.
    Je te ferais notez que dans le code que tu donne testClass n'a pas un Borderlayout, mais aucun layout.

    Citation Envoyé par lilmeth Voir le message
    Par contre si je mets mon gridlayout dans l'une des autres régions (North, West, SOuth, East) alors les composants du gridlayout disparaissent quand je réduis la fenêtre.
    La cellule n'est pas agrandie si la contrainte de cette cellule est différente de BorderLayout.CENTER. Ce layout fonctionne ainsi. Les composants ne disparaissent 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
    45
    46
    47
    48
    49
    50
    import java.awt.BorderLayout;
    import java.awt.GridLayout;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
     
    @SuppressWarnings("serial")
    public class Test extends JFrame {
     
    	public static void main(String[] args) {
    		Test t = new Test();
    		t.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		t.setContentPane(new testClass());
    		t.pack();
    		t.setVisible(true);
    	}
     
    }
    @SuppressWarnings("serial")
    class testClass extends JPanel{
     
    	private JPanel mainPanel;
    	private JButton button1;
    	private JButton button2;
    	private JButton button3;
    	private JButton button4;
     
     
    	public testClass() {
    		setLayout(new BorderLayout());
     
    		this.mainPanel = new JPanel();
    		add(this.mainPanel, BorderLayout.NORTH);
     
    		this.button1 = new JButton("bouton1");
    		this.button2= new JButton("bouton2");
    		this.button3= new JButton("bouton3");
    		this.button4= new JButton("bouton4");
     
    		this.mainPanel.setLayout(new GridLayout(1,4));
     
    		this.mainPanel.add(this.button1);
    		this.mainPanel.add(this.button2);
    		this.mainPanel.add(this.button3);
    		this.mainPanel.add(this.button4);
     
     
    	}
     
    }

  8. #8
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    A noter toutefois qu'il est préférable d'utiliser le JXLayer plutôt que le JXTransformer. Le JXTransformer étant un proto de ce qu'est par la suite devenu le JXLayer.
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

Discussions similaires

  1. Ajouter dynamiquement un composant dans un panel ou une popup
    Par ludogoal dans le forum Windows Presentation Foundation
    Réponses: 4
    Dernier message: 21/04/2008, 16h08
  2. Afficher un composant d'un panel par dessus un autre ?
    Par dr23fr dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 29/10/2007, 18h01
  3. Redimensionnement composants après modif taille fenetre
    Par Revan777 dans le forum C++Builder
    Réponses: 5
    Dernier message: 06/07/2007, 10h54

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