Lorsque l'on utilise un jliste ne jamsi partager le meme model entre 2 jlist reporter les changement de model sur les 2 model
Si vous le faite seul la derniere jlist sera rafraichie l'autre sera dans un etat zombie
step 3

|
Step3 Layout Setup
GroupLayout layout = new GroupLayout(jpanel);
jpanel.setLayout(layout);
layout.setAutoCreateGaps(true);
layout.setAutoCreateContainerGaps(true);
Creation du gestion de layout
On l'atribut au jpanel
On autorise la creation d'espace entre les composansts le gestionaire fais le taf a votre place
Regle Horizontal
SequentialGroup hGroup = layout.createSequentialGroup();
hGroup.addComponent(jb1);
hGroup.addComponent(jl1);
layout.setHorizontalGroup(hGroup);
sequential signifiant ce suivant apret on place les composant devant ce suivre
Regle Vertical
ParallelGroup vGroup= layout.createParallelGroup(GroupLayout.Alignment.LEADING);
vGroup.addComponent(jb1);
vGroup.addComponent(jl1);
layout.setVerticalGroup(vGroup);
Pour l'arangement verticale on place un 1er groupe sequenciel (obligatoir) puis on dit que l'on va ajouter un group aligné
GroupLayout.Alignment.BASELINE element aligner depuis leur point de depart
|
Formatage Du code
LSun presente un autre formatage je vous le deconseille car il n'est pas pratique pour faire des boucles
layout.setHorizontalGroup(
layout.createSequentialGroup()
.addComponent(jb1)
.addComponent(jl1)
);
layout.setVerticalGroup(
layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
.addComponent(jb1)
.addComponent(jl1)
);
|
step 3a

|
Step 3a
ParallelGroup hGroup= layout.createParallelGroup(GroupLayout.Alignment.LEADING);
hGroup.addComponent(jb);
hGroup.addComponent(jl);
layout.setHorizontalGroup(hGroup);
SequentialGroup vGroup = layout.createSequentialGroup();
vGroup.addComponent(jb);
vGroup.addComponent(jl);
layout.setVerticalGroup(vGroup);
Si vous n'avais pas comprits a ce stade pour quoi les composants sont dans ce sens inutil de continuer
Cassez vous la tete copier coller mon code jouer avec
|
step 3b

|
Step 3b
La seul difference est que l'on a forcé la taille des composants (j'ais rajouté de la couleur pour le voir)
A noter bioen que contraindre un jlist en taille est une mauvaise idée si le modelle n'est pas contraint ceci est une exemple
0, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE sgnifie tu a le droit de varié en tailel de zero à l'infini(vue la resolution des ecrans)
Noté bien que le composant prendra donc la taille du parent et varira avec lui
150, 150,150 tu a le droit de varié de la taille 150px a 150 px bref on le fix
ParallelGroup hGroup= layout.createParallelGroup(GroupLayout.Alignment.LEADING);
hGroup.addComponent(jb,0, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE);
hGroup.addComponent(jl,0, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE);
layout.setHorizontalGroup(hGroup);
SequentialGroup vGroup = layout.createSequentialGroup();
vGroup.addComponent(jb);
vGroup.addComponent(jl,150, 150,150);
layout.setVerticalGroup(vGroup);
utiliser mon code jouer avec
Exercice: rendez la jlist redimensionable verticalement agrandissez la fenetre elle devrais suivre
|
Agencement 1 mal foutue

|
Layout du JDialogue
Affichage 1
ParallelGroup hGroup= layout.createParallelGroup(GroupLayout.Alignment.LEADING);
SequentialGroup hsg= layout.createSequentialGroup();
hsg.addComponent(jlabel);
hsg.addComponent(jtextfieldnp);
hGroup.addGroup(hsg);
hsg= layout.createSequentialGroup();
hsg.addComponent(jbutton);
hsg.addComponent(jbuttoncancel);
hGroup.addGroup(hsg);
layout.setHorizontalGroup(hGroup);
ParallelGroup vGroup = layout.createParallelGroup(GroupLayout.Alignment.LEADING);
SequentialGroup vsg= layout.createSequentialGroup();
vsg.addComponent(jlabel,20,20,20);
vsg.addComponent(jbutton,20,20,20);
vGroup.addGroup(vsg);
vsg= layout.createSequentialGroup();
vsg.addComponent(jtextfieldnp,20,20,20);
vsg.addComponent(jbuttoncancel,20,20,20);
vGroup.addGroup(vsg);
layout.setVerticalGroup(vGroup);
Cela ne me va pas car les bouttons sont tassé.
Cela provient du faite que sur les regle horizontal on a placé les label+text field ensemble en sequence et les 2boutons en seq puis regrouper sur un prarallele
|
Agencement 2 revue

|
Affichage 2
Voici le code modifier suivant le schema les bt sont aligné avec les debuts de composants
SequentialGroup hGroup= layout.createSequentialGroup();
ParallelGroup hg= layout.createParallelGroup(GroupLayout.Alignment.LEADING);
hg.addComponent(jlabel);
hg.addComponent(jbutton);
hGroup.addGroup(hg);
hg= layout.createParallelGroup(GroupLayout.Alignment.LEADING);
hg.addComponent(jtextfieldnp);
hg.addComponent(jbuttoncancel);
hGroup.addGroup(hg);
layout.setHorizontalGroup(hGroup);
|
Agencement 3 centrage

|
Affichage 3
Methode: getJpannelAffichage3()
Pour aligné les boutton au centre des comopsant du dessus il suffit de placer CENTER au lieux de LEADING
SequentialGroup hGroup= layout.createSequentialGroup();
ParallelGroup hg= layout.createParallelGroup(GroupLayout.Alignment.CENTER);
hg.addComponent(jlabel);
hg.addComponent(jbutton);
hGroup.addGroup(hg);
hg= layout.createParallelGroup(GroupLayout.Alignment.CENTER);
hg.addComponent(jtextfieldnp);
hg.addComponent(jbuttoncancel);
hGroup.addGroup(hg);
layout.setHorizontalGroup(hGroup);
|
Resize boitte dialogue Step5a4.png

|
pack commande
Ici je laisse la boitte de dialogue s'adapter au comopsans qui sont dedans au lieux de la forcer
jdialoguenp.pack(); La comande pack permet defectuer le travaille mais elle doit etre placer en dernier sinon elel ne peux evaluer la taille des composants
if ("newProject".equals(e.getActionCommand())) {
nomatch=false;
//System.out.println("newProject catch");
jdialoguenp = new JDialog(jframe,"New Project",true);
//jdialoguenp.setSize(300,150);
//jdialoguenp.setResizable(false);
jdialoguenp.setLocationRelativeTo(jframe);
//on charge le jpannel pour la boitte de dial
jdialoguenp.add(getJpannelAffichage3());
jdialoguenp.pack();
jdialoguenp.setVisible(true);
}}
|
Gap Step5a5.png

|
Gap Step5a5
J'ais reforcer la taille du jdialogue pour que vous voyez le travaille du gap sur l'axe y
Cette commande vsg.addPreferredGap(LayoutStyle.ComponentPlacement.RELATED, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE); signifie:
je veux mettre un espace (relatif a la taille des objey,de preference de la taille du contenaire,pouvant s'etendre a l'infinie)
ParallelGroup vGroup = layout.createParallelGroup(GroupLayout.Alignment.LEADING);
SequentialGroup vsg= layout.createSequentialGroup();
vsg.addComponent(jlabel,20,20,20);
vsg.addPreferredGap(LayoutStyle.ComponentPlacement.RELATED,
GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE);
vsg.addComponent(jbutton,20,20,20);
vGroup.addGroup(vsg);
vsg= layout.createSequentialGroup();
vsg.addComponent(jtextfieldnp,20,20,20);
vsg.addPreferredGap(LayoutStyle.ComponentPlacement.RELATED,
GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE);
vsg.addComponent(jbuttoncancel,20,20,20);
vGroup.addGroup(vsg);
layout.setVerticalGroup(vGroup);
|
Gap Step5a6.png

|
Gap Step5a6
Ici je force l'espace a entre les 2 groupe de composant à 30 maxi (pour le min je restte dynamic)
Et je repartie le reste a l'infi avant et aprés
Agrandisser la fenetre poru voir le travailel du layout et des gap
ParallelGroup vGroup = layout.createParallelGroup(GroupLayout.Alignment.LEADING);
SequentialGroup vsg= layout.createSequentialGroup();
vsg.addPreferredGap(LayoutStyle.ComponentPlacement.RELATED,
GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE);
vsg.addComponent(jlabel,20,20,20);
vsg.addPreferredGap(LayoutStyle.ComponentPlacement.RELATED,
GroupLayout.DEFAULT_SIZE, 30);
vsg.addComponent(jbutton,20,20,20);
vsg.addPreferredGap(LayoutStyle.ComponentPlacement.RELATED,
GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE);
vGroup.addGroup(vsg);
vsg= layout.createSequentialGroup();
vsg.addPreferredGap(LayoutStyle.ComponentPlacement.RELATED,
GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE);
vsg.addComponent(jtextfieldnp,20,20,20);
vsg.addPreferredGap(LayoutStyle.ComponentPlacement.RELATED,
GroupLayout.DEFAULT_SIZE, 30);
vsg.addComponent(jbuttoncancel,20,20,20);
vsg.addPreferredGap(LayoutStyle.ComponentPlacement.RELATED,
GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE);
vGroup.addGroup(vsg);
layout.setVerticalGroup(vGroup);
|

|
if ("cancelnp".equals(e.getActionCommand())) {
nomatch=false;
jdialoguenp.dispose();
}
if ("oknp".equals(e.getActionCommand())) {
nomatch=false;
projectname=jtextfieldnp.getText();
System.out.println("MyGui.actionPerformed --> "+projectname);
//FileProcessing fp = new FileProcessing();
//fp.createfile(projectname+".backup");
listModel.addElement(projectname);
jlabelRigtPro.setText(projectname);
jdialoguenp.dispose();
}
On gére les 2 action rajouté par le JDialog
Step 6.1

|
Je procede en plusieur etape celle si est la plus difficile
J'organize differement le code de layout pour pouvoir faire des boucles
Cela ma pris pas mal de temps la plus parts des exemples etant organizé de facons imbriqué
Danger ne jamais mettre 2 fois le meme objet
JRadioButton [] arrayjr;
//horizontal
GroupLayout.SequentialGroup hGroup = layout.createSequentialGroup();
//les objet charger sur le pgh1 seront aligné sur les x
ParallelGroup pgh1= layout.createParallelGroup(GroupLayout.Alignment.LEADING);
pgh1.addComponent(jlab[0],1000, 1000, 1000);
//sur le sgh2 il se suivron
GroupLayout.SequentialGroup sgh2 = layout.createSequentialGroup();
sgh2.addComponent(jlab[1],200, 200, 200);
arrayjr= (JRadioButton[]) arrayobj[1];
sgh2.addComponent(arrayjr[0],100, 100, 100);
pgh1.addGroup(sgh2);
hGroup.addGroup(pgh1);
layout.setHorizontalGroup(hGroup);
//vertical
GroupLayout.SequentialGroup vGroup = layout.createSequentialGroup();
ParallelGroup pg1= layout.createParallelGroup(GroupLayout.Alignment.LEADING);
pg1.addComponent(jlab[0],50, 50, 50);//a
vGroup.addGroup(pg1);
pg1= layout.createParallelGroup(GroupLayout.Alignment.LEADING);
pg1.addComponent(jlab[1],50, 50, 50);//a
arrayjr= (JRadioButton[]) arrayobj[1];
pg1.addComponent(arrayjr[0],50, 50, 50);
vGroup.addGroup(pg1);
layout.setVerticalGroup(vGroup);
|
Step 6.2

|
Mise en place de la boucle pour afficher les JRadioButton contenue dans le tableau d'objet
JRadioButton [] arrayjr;
GroupLayout.SequentialGroup hGroup = layout.createSequentialGroup();
//hGroup.addComponent(arg0); place composant seul devant
ParallelGroup pgh1= layout.createParallelGroup(GroupLayout.Alignment.LEADING);
pgh1.addComponent(jlab[0],1000, 1000, 1000);
GroupLayout.SequentialGroup sgh2 = layout.createSequentialGroup();
sgh2.addComponent(jlab[1],200, 200, 200);
arrayjr= (JRadioButton[]) arrayobj[1];
for (int i=0;i<arrayjr.length;i++){
sgh2.addComponent(arrayjr[i],100, 100, 100);
}
pgh1.addGroup(sgh2);
hGroup.addGroup(pgh1);
layout.setHorizontalGroup(hGroup);
//vertical
GroupLayout.SequentialGroup vGroup = layout.createSequentialGroup();
ParallelGroup pg1= layout.createParallelGroup(GroupLayout.Alignment.LEADING);
pg1.addComponent(jlab[0],50, 50, 50);//a
vGroup.addGroup(pg1);
pg1= layout.createParallelGroup(GroupLayout.Alignment.LEADING);
pg1.addComponent(jlab[1],50, 50, 50);//a
arrayjr= (JRadioButton[]) arrayobj[1];
for (int i=0;i<arrayjr.length;i++){
pg1.addComponent(arrayjr[i],50, 50, 50);
}
vGroup.addGroup(pg1);
layout.setVerticalGroup(vGroup);
|
Step 6.3

|
Step 6.2: mise en place des boucles bouclé :)
JRadioButton [] arrayjr;
//horizontal
GroupLayout.SequentialGroup hGroup = layout.createSequentialGroup();
ParallelGroup pgh1= layout.createParallelGroup(GroupLayout.Alignment.LEADING);
for (int j=0;j<jlab.length;j++){
System.out.println("label name : "+jlab[j].getName()+ " j:"+j);
if (jlab[j].getName().startsWith("Title")){
pgh1.addComponent(jlab[j],1000, 1000, 1000);
}else{
GroupLayout.SequentialGroup sgh2 = layout.createSequentialGroup();
sgh2.addComponent(jlab[j],200, 200, 200);
arrayjr= (JRadioButton[]) arrayobj[j];
for (int i=0;i<arrayjr.length;i++){
System.out.println(" \t i:"+i);
sgh2.addComponent(arrayjr[i],100, 100, 100);
}
pgh1.addGroup(sgh2);
}
}
hGroup.addGroup(pgh1);
layout.setHorizontalGroup(hGroup);
//vertical
GroupLayout.SequentialGroup vGroup = layout.createSequentialGroup();
for (int j=0;j<jlab.length;j++){
System.out.println("label name : "+jlab[j].getName()+ " j:"+j);
ParallelGroup pg1= layout.createParallelGroup(GroupLayout.Alignment.LEADING);
pg1.addComponent(jlab[j],50, 50, 50);
if (!(jlab[j].getName().startsWith("Title"))){
arrayjr= (JRadioButton[]) arrayobj[j];
for (int i=0;i<arrayjr.length;i++){
System.out.println(" \t i:"+i);
pg1.addComponent(arrayjr[i],50, 50, 50);
}
}
vGroup.addGroup(pg1);
}
layout.setVerticalGroup(vGroup);
|