Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[Layout]Meilleur choix pour une collection de JscrollPane en simple colonnes de hauteur fixe

6 réponses
Avatar
Daniel Moyne
Bonjour,
j'ai un JPanel dans lequel je veux placer une collection de JScrollPanes qui
contiennent chacun un JTree ; je veux que ces objets utilisent toute la
largeur du JPanel mais qu'ils soient de hauteur fixe.

J'ai pensé à GridLayout avec une seule colonne, mais si dans ce cas tous les
objets sont bien positionnés en une seule colonne, ils occupent toute la
hauteur du JPanel et donc se voient attribuer une hauteur variable ; par
exemple si je diminue la hauteur du JPanel tous les JScrollPanes reduisent
leur hauteur (identique) ; cela ne me convient pas !
Question : avec ce type de layout peut-on en plus imposer une hauteur fixe
pour chaque objet JScrollPane.

NetBeans propose en interne un layout qui bizarrement n'apparaît pas en
"Design", qui utilise un GroupLayout et qui correspond parfaitement à ce que
veux au final, mais apparemment complexe de mise en oœuvre ; ils procèdent
ainsi :
GroupLayout layout = new javax.swing.GroupLayout(JPanel);
JPanel.setLayout(layout);
layout.setHorizontalGroup(layout.createParallelGroup(...addGroup(layout.createSequentialGroup().addContainerGap().addComponent(jScrollPane,....
et quelque chose d'analogue avec :
layout.setVerticalGroup(...);

Désolé il m'est difficile de tout écrire ici.

Dans ce cas, contrairement au GridLayout, l'ajout du composant par
addComponent est très bizarrement placé ! ; mon problème est que surtout je
veux manipuler dynamiquement ces JScrollPanes : les placer où je veux par
rapport aux autres, les enlever, et les permuter ; l'alternative Netbeans me
semble difficile à utiliser dynamiquement car elle semble supposer tous les
composants connus !

Des idées ; merci.

6 réponses

Avatar
Yliur
Le Wed, 09 Jun 2010 11:52:10 +0200
Daniel Moyne a écrit :

Bonjour,
j'ai un JPanel dans lequel je veux placer une collection de
JScrollPanes qui contiennent chacun un JTree ; je veux que ces objets
utilisent toute la largeur du JPanel mais qu'ils soient de hauteur
fixe.

J'ai pensé à GridLayout avec une seule colonne, mais si dans ce cas
tous les objets sont bien positionnés en une seule colonne, ils
occupent toute la hauteur du JPanel et donc se voient attribuer une
hauteur variable ; par exemple si je diminue la hauteur du JPanel
tous les JScrollPanes reduisent leur hauteur (identique) ; cela ne me
convient pas ! Question : avec ce type de layout peut-on en plus
imposer une hauteur fixe pour chaque objet JScrollPane.

NetBeans propose en interne un layout qui bizarrement n'apparaît pas
en "Design", qui utilise un GroupLayout et qui correspond
parfaitement à ce que veux au final, mais apparemment complexe de
mise en oœuvre ; ils procèdent ainsi :
GroupLayout layout = new javax.swing.GroupLayout(JPanel);
JPanel.setLayout(layout);
layout.setHorizontalGroup(layout.createParallelGroup(...addGroup(layout.c reateSequentialGroup().addContainerGap().addComponent(jScrollPane,....
et quelque chose d'analogue avec :
layout.setVerticalGroup(...);

Désolé il m'est difficile de tout écrire ici.

Dans ce cas, contrairement au GridLayout, l'ajout du composant par
addComponent est très bizarrement placé ! ; mon problème e st que
surtout je veux manipuler dynamiquement ces JScrollPanes : les placer
où je veux par rapport aux autres, les enlever, et les permuter ;
l'alternative Netbeans me semble difficile à utiliser dynamiquement
car elle semble supposer tous les composants connus !

Des idées ; merci.





Si on besoin est très complexe (qu'est ce que "les placer où je v eux
par rapport aux autres ?"), tu peux définir ton propre gestionnaire de
placement, spécifique à cette fenêtre (c'est pas si méc hant que
ça :) ) .
Avatar
Daniel Moyne
Yliur wrote:

Le Wed, 09 Jun 2010 11:52:10 +0200
Daniel Moyne a écrit :

Bonjour,
j'ai un JPanel dans lequel je veux placer une collection de
JScrollPanes qui contiennent chacun un JTree ; je veux que ces objets
utilisent toute la largeur du JPanel mais qu'ils soient de hauteur
fixe.

J'ai pensé à GridLayout avec une seule colonne, mais si dans ce cas
tous les objets sont bien positionnés en une seule colonne, ils
occupent toute la hauteur du JPanel et donc se voient attribuer une
hauteur variable ; par exemple si je diminue la hauteur du JPanel
tous les JScrollPanes reduisent leur hauteur (identique) ; cela ne me
convient pas ! Question : avec ce type de layout peut-on en plus
imposer une hauteur fixe pour chaque objet JScrollPane.

NetBeans propose en interne un layout qui bizarrement n'apparaît pas
en "Design", qui utilise un GroupLayout et qui correspond
parfaitement à ce que veux au final, mais apparemment complexe de
mise en oœuvre ; ils procèdent ainsi :
GroupLayout layout = new javax.swing.GroupLayout(JPanel);
JPanel.setLayout(layout);





layout.setHorizontalGroup(layout.createParallelGroup(...addGroup(layout.createSequentialGroup().addContainerGap().addComponent(jScrollPane,....
et quelque chose d'analogue avec :
layout.setVerticalGroup(...);

Désolé il m'est difficile de tout écrire ici.

Dans ce cas, contrairement au GridLayout, l'ajout du composant par
addComponent est très bizarrement placé ! ; mon problème est que
surtout je veux manipuler dynamiquement ces JScrollPanes : les placer
où je veux par rapport aux autres, les enlever, et les permuter ;
l'alternative Netbeans me semble difficile à utiliser dynamiquement
car elle semble supposer tous les composants connus !

Des idées ; merci.





Si on besoin est très complexe (qu'est ce que "les placer où je veux
par rapport aux autres ?"), tu peux définir ton propre gestionnaire de
placement, spécifique à cette fenêtre (c'est pas si méchant que
ça :) ) .


Le placement fais intervenir simplement l'ordre.
Avatar
Yliur
Le Thu, 10 Jun 2010 12:40:53 +0200
Daniel Moyne a écrit :

Yliur wrote:

> Le Wed, 09 Jun 2010 11:52:10 +0200
> Daniel Moyne a écrit :
>
>> Bonjour,
>> j'ai un JPanel dans lequel je veux placer une collection de
>> JScrollPanes qui contiennent chacun un JTree ; je veux que ces
>> objets utilisent toute la largeur du JPanel mais qu'ils soient de
>> hauteur fixe.
>>
>> J'ai pensé à GridLayout avec une seule colonne, mais si dans ce cas
>> tous les objets sont bien positionnés en une seule colonne, ils
>> occupent toute la hauteur du JPanel et donc se voient attribuer une
>> hauteur variable ; par exemple si je diminue la hauteur du JPanel
>> tous les JScrollPanes reduisent leur hauteur (identique) ; cela ne
>> me convient pas ! Question : avec ce type de layout peut-on en plus
>> imposer une hauteur fixe pour chaque objet JScrollPane.
>>
>> NetBeans propose en interne un layout qui bizarrement n'apparaît
>> pas en "Design", qui utilise un GroupLayout et qui correspond
>> parfaitement à ce que veux au final, mais apparemment complexe de
>> mise en oœuvre ; ils procèdent ainsi :
>> GroupLayout layout = new javax.swing.GroupLayout(JPanel);
>> JPanel.setLayout(layout);
>>
layout.setHorizontalGroup(layout.createParallelGroup(...addGroup(layout.c reateSequentialGroup().addContainerGap().addComponent(jScrollPane,....
>> et quelque chose d'analogue avec :
>> layout.setVerticalGroup(...);
>>
>> Désolé il m'est difficile de tout écrire ici.
>>
>> Dans ce cas, contrairement au GridLayout, l'ajout du composant par
>> addComponent est très bizarrement placé ! ; mon problèm e est que
>> surtout je veux manipuler dynamiquement ces JScrollPanes : les
>> placer où je veux par rapport aux autres, les enlever, et les
>> permuter ; l'alternative Netbeans me semble difficile à utiliser
>> dynamiquement car elle semble supposer tous les composants connus !
>>
>> Des idées ; merci.
>>
>
>
> Si on besoin est très complexe (qu'est ce que "les placer où je veux
> par rapport aux autres ?"), tu peux définir ton propre gestionnaire
> de placement, spécifique à cette fenêtre (c'est pas si m échant que
> ça :) ) .
Le placement fais intervenir simplement l'ordre.




Est-ce que Box ne te permet pas de faire ce que tu veux ? Je ne sais
pas si les composants vont toute prendre la largeur (à voir), mais ils
seront au moins placés l'un en dessous de l'autre sans être dà ©formés
comme dans un GridLayout.
Avatar
Daniel Moyne
Yliur wrote:

Le Thu, 10 Jun 2010 12:40:53 +0200
Daniel Moyne a écrit :

Yliur wrote:

> Le Wed, 09 Jun 2010 11:52:10 +0200
> Daniel Moyne a écrit :
>
>> Bonjour,
>> j'ai un JPanel dans lequel je veux placer une collection de
>> JScrollPanes qui contiennent chacun un JTree ; je veux que ces
>> objets utilisent toute la largeur du JPanel mais qu'ils soient de
>> hauteur fixe.
>>
>> J'ai pensé à GridLayout avec une seule colonne, mais si dans ce cas
>> tous les objets sont bien positionnés en une seule colonne, ils
>> occupent toute la hauteur du JPanel et donc se voient attribuer une
>> hauteur variable ; par exemple si je diminue la hauteur du JPanel
>> tous les JScrollPanes reduisent leur hauteur (identique) ; cela ne
>> me convient pas ! Question : avec ce type de layout peut-on en plus
>> imposer une hauteur fixe pour chaque objet JScrollPane.
>>
>> NetBeans propose en interne un layout qui bizarrement n'apparaît
>> pas en "Design", qui utilise un GroupLayout et qui correspond
>> parfaitement à ce que veux au final, mais apparemment complexe de
>> mise en oœuvre ; ils procèdent ainsi :
>> GroupLayout layout = new javax.swing.GroupLayout(JPanel);
>> JPanel.setLayout(layout);
>>





layout.setHorizontalGroup(layout.createParallelGroup(...addGroup(layout.createSequentialGroup().addContainerGap().addComponent(jScrollPane,....
>> et quelque chose d'analogue avec :
>> layout.setVerticalGroup(...);
>>
>> Désolé il m'est difficile de tout écrire ici.
>>
>> Dans ce cas, contrairement au GridLayout, l'ajout du composant par
>> addComponent est très bizarrement placé ! ; mon problème est que
>> surtout je veux manipuler dynamiquement ces JScrollPanes : les
>> placer où je veux par rapport aux autres, les enlever, et les
>> permuter ; l'alternative Netbeans me semble difficile à utiliser
>> dynamiquement car elle semble supposer tous les composants connus !
>>
>> Des idées ; merci.
>>
>
>
> Si on besoin est très complexe (qu'est ce que "les placer où je veux
> par rapport aux autres ?"), tu peux définir ton propre gestionnaire
> de placement, spécifique à cette fenêtre (c'est pas si méchant que
> ça :) ) .
Le placement fais intervenir simplement l'ordre.




Est-ce que Box ne te permet pas de faire ce que tu veux ? Je ne sais
pas si les composants vont toute prendre la largeur (à voir), mais ils
seront au moins placés l'un en dessous de l'autre sans être déformés
comme dans un GridLayout.


je vais essayer ; merci.
Avatar
Francis JUGE-BOIRARD
Bonjour,
Je ne fais ici qu'un retour d'expérience mais, selon moi, le plus simpl e
et d'utiliser un GridBagLayout.
- Il n'est pas si compliqué que cela.
- Pas trop gourmand non plus.
- Il permet un tas de chose du plus simple au plus complexe.

Je n'ai utilisé de Layout plus "simple" que pour des "morceaux"
d'interface vraiment très simple (JPanel de JButton GridLayout).
Interface contenant un barre d'outils flottante (BorderLayout prévu par
Swing) etc.
Dès qu'une interface dépasse le simplisimme, les GridBagLayout sont l a
réponse.
Avatar
Daniel Moyne
Francis JUGE-BOIRARD wrote:

Bonjour,
Je ne fais ici qu'un retour d'expérience mais, selon moi, le plus simple
et d'utiliser un GridBagLayout.
- Il n'est pas si compliqué que cela.
- Pas trop gourmand non plus.
- Il permet un tas de chose du plus simple au plus complexe.

Je n'ai utilisé de Layout plus "simple" que pour des "morceaux"
d'interface vraiment très simple (JPanel de JButton GridLayout).
Interface contenant un barre d'outils flottante (BorderLayout prévu par
Swing) etc.
Dès qu'une interface dépasse le simplisimme, les GridBagLayout sont la
réponse.


ce que je veux c'est placer mes jScrollPanes dans un seule colonne de
hauteur fixe avec une largeur = largeur du Panel ; avec GridLayout je peux
mettre mes jScrollPanes avec des espaces entre eux mais je voudrais aussi un
espace à droite et à gauche de chaque jScrollPane ; je vais essayer avec
GridBagLayout.