Aide débutant !

Résolu
zut69 Messages postés 354 Date d'inscription lundi 26 juillet 2004 Statut Membre Dernière intervention 26 juin 2012 - 12 août 2008 à 12:16
Madvin Messages postés 123 Date d'inscription mardi 5 août 2003 Statut Membre Dernière intervention 26 août 2012 - 13 août 2008 à 14:52
Bonjour,

J'ai créer une applet, mais pour tout ce qui est de l'affichage j'arrive pas à avoir ce que je veux.
Du coup, j'aurais besoin d'un peu d'aide pour le init()

Je voudrais quelque chose qui ressemble à ça:

-------------------------------------------------------------------------
| Checkbox1                             |                                                            |
| Checkbox2                             | ici un JScrollPane                                 |
| Checkbox3                             |                                                            |
| JProgressBar                           |                                                            |
|                                         Parcourir...                                                   |

Voilà. J'ai fait quelques essais, mais j'ai toujours que 1 ou 2 éléments affichés
et suivant l'ordre du add, c'est une fois la checkbox3, une fois le JScrollPane, etc

J'ai essayé avec ça:

en sachant que les bits_... sont des Checkbox appartenant à un CheckboxGroup "groupe"
scrollpane1 est un JScrollPane avec textbox inclus.
button1 est un JButton.

    this.getContentPane().add(bits_18);
    this.getContentPane().add(bits_512);
    this.getContentPane().add(bits_1024);
    this.getContentPane().add(scrollpane1);
    this.getContentPane().add(button1, BorderLayout.SOUTH);

Avec le code ci-dessus, j'ai juste le JScrollPane et le bouton Parcourir qui s'affiche.

Merci d'avance pour votre aide,

FF

3 réponses

Madvin Messages postés 123 Date d'inscription mardi 5 août 2003 Statut Membre Dernière intervention 26 août 2012 3
12 août 2008 à 14:51
Salut,

C'est ta façon d'insérer les éléments dans le ContentPane qui n'est pas correcte.
Il faut que tu utilises d'autres layout afin d'y insérer les objets que tu veux et dans l'agencement que tu veux.

Ton bouton1 au SUD : OK

Ton JscrollPane doit être à droite, il faut que tu l'insères donc à l'EST :
this.getContentPane().add(scrollpane1, BorderLayout.EAST)

Pour tes éléments sur la gauche, il te faut utiliser un autre Container : un JPanel par exemple, que l'on note jPanel1. Tu l'insères donc à l'OUEST :
this.getContentPane().add(jPanel1, BorderLayout.WEST)

Dans ce container, tes éléments sont les uns au dessus des autres, tu peux donc utiliser par exemple un layout de type BoxLayout ou aussi de type GridLayout au choix, en spécifiant que tu veux les disposer verticalement pour les avoir les uns sur les autres :
jPanel1.setLayout(new BoxLayout(jPanel1,
BoxLayout.Y_AXIS)
ou

jPanel1.setLayout(new GridLayout(4, 1))

Puis tu n'as plus qu'à y insérer tes éléments dans l'ordre :
jPanel1.add(bits_18);
jPanel1.add(bits_512);
jPanel1.add(bits_1024);
jPanel1.add(jProgressBar1);

Voilà en gros ce qu'il faut faire. Mes morceaux de code ne sont peut-être pas corrects à 100%, mais le plus important c'est que tu comprennes le principe sur comment agencer les éléments graphiques.
Il suffit de retenir qu'un composant contient un type de layout paramétrable qui permet d'agencer d'une certaine façon les composants qu'il contient. Ces sous-composants contiennent eux aussi des layouts qui peuvent accueillir d'autres composants et ainsi de suite... Ainsi, on peux obtenir n'importe quel type d'agencement de tes composants.
Des exemples de layout très utilisés :
- BorderLayout : permet d'insérer des éléments au nord, sud, est, ouest, centre
- BoxLayout : permet d'agencer des éléments les uns au-dessus des autres, ou les uns à côté des autres
- GridLayout : permet d'agencer des éléments en grille (nombre de colonnes et de lignes paramétrables)
....
Consulte la Javadoc pour en découvrir d'autres et pour avoir plus d'infos...

Après ça, tu pourras personnaliser l'agencement de tes éléments comme tu l'entends en fonction de ce que tu veux.

@+
3
zut69 Messages postés 354 Date d'inscription lundi 26 juillet 2004 Statut Membre Dernière intervention 26 juin 2012 1
13 août 2008 à 01:30
Merci beaucoup!
Très bien expliqué, j'ai pu me débrouiller et j'ai appris quelques trucs.
Juste un détail, le bouton est collé à la textbox, y a-t'il moyen de laisser un léger espace
entre l'élément North et les éléments West-East, ou encore entre l'élément West
et l'élément East?

Merci,
A+

FF
0
Madvin Messages postés 123 Date d'inscription mardi 5 août 2003 Statut Membre Dernière intervention 26 août 2012 3
13 août 2008 à 14:52
Je me souviens que je galérais aussi pour avoir des espaces entre certains de mes composants.
Au milieu, il te reste encore la partie CENTER du BorderLayout. Il devrait y avoir un moyen pour y insérer un Composant vide.

Sinon regarde la doc au lien qui suit, il contient pas mal de trucs et astuces, d'exemples, et t'explique même comment agencer des éléments sans utiliser de Layout (Mais ne pas oublier que les layouts sont surtout pratiques car ils gèrent automatiquement l'agencement des composants en cas de redimensionnement de la fenêtre). Ils expliquent même comment utiliser des composants invisibles (c'est peut-être ce que tu cherches...)

http://java.sun.com/docs/books/tutorial/uiswing/layout/index.html

@+
0
Rejoignez-nous