Affichage d'une interface graphique

Signaler
Messages postés
249
Date d'inscription
mardi 16 juillet 2002
Statut
Membre
Dernière intervention
7 août 2003
-
Messages postés
1
Date d'inscription
mardi 8 avril 2008
Statut
Membre
Dernière intervention
4 mai 2008
-
J'ai commencé le java depuis peu et j'essaye de faire une interface graphique. Je sais qu'il existe deux classes pour cela, swing et awt.
En ce moment j'essaye d'utiliser awt. Mais j'ai des questions car c'est bizarre la manière pour afficher les éléments graphique.

Dans le tuto que j'ai pour afficher un Menu la fonction main se contente simplement d'allouer dynamiquement avec new une variable d'un type dérivé de Frame.

Là je demande qu'est que c'est que Frame? Je pense que c'est la fenêtre mais ce n'était pas expliqué.

Ce qui me choque c'est le fait d'appeler le constructeur qui se contente d'ajouter des objets et ça suffit à tout afficher. Je pense que je ne suis pas habitué à ce que tout soit automatique.

ça ajoute à quoi addWindowListener?

pack();
A quoi sert cette fonction?

merci d'avance

5 réponses

Messages postés
261
Date d'inscription
jeudi 5 septembre 2002
Statut
Membre
Dernière intervention
6 octobre 2005
11
Déjà un bon conseil, met toi à swing, ce n'est pas plus difficile qu'awt, et c'est beaucoup mieux gérer, au niveau affichage, moins de bug,... , bref bien mieux. awt est si tu veux la vielle version graphique de Java, et swing, la nouvelle.
Ensuite, sache, que comme tu hérites de Frame, tu fais appeles implicitement à son constructeur, qui lui construit la fenêtre, il te reste donc à la remplir.
addWindowListener, ajoute un ècouteur d'évenements fenêtre, un WindowListener. Il écoute si la fenêtre est fermer, iconifiée, désiconifiée, c'est à dire que lorque l'un de ces événements arrive, il est appelé, et il réagit selon le code que tu lui as donné.
La méthode pack() précalul la taille des composants à l'intérieur de la fenêtre et en déduit la taille de la fenêtre. Il se base pour celà à la taille préférée des composants (en swing c'est sur, je ne me rappeles plus pour awt). Ce qui conféres la taille "idéale".
JHelp
Messages postés
249
Date d'inscription
mardi 16 juillet 2002
Statut
Membre
Dernière intervention
7 août 2003
2
-------------------------------
Réponse au message :
merci te ton aide.

En fait je comencais pas awt car j'avais lu qu'il était nécessaire de le connaître pour utiliser swing.

Implement ça fait l'appel implicte si j'ai bien compris?

donc pack() ça place automatiquement?
Quand on appell pack, ça replace tout ou seulement un seul élément?

Pack ça sert surtout à ne pas trop se fatiguer à appeller des fonction set si j'ai bien compris.
-------------------------------

> Déjà un bon conseil, met toi à swing, ce n'est pas plus difficile qu'awt, et c'est beaucoup mieux gérer, au niveau affichage, moins de bug,... , bref bien mieux. awt est si tu veux la vielle version graphique de Java, et swing, la nouvelle.
> Ensuite, sache, que comme tu hérites de Frame, tu fais appeles implicitement à son constructeur, qui lui construit la fenêtre, il te reste donc à la remplir.
> addWindowListener, ajoute un ècouteur d'évenements fenêtre, un WindowListener. Il écoute si la fenêtre est fermer, iconifiée, désiconifiée, c'est à dire que lorque l'un de ces événements arrive, il est appelé, et il réagit selon le code que tu lui as donné.
> La méthode pack() précalul la taille des composants à l'intérieur de la fenêtre et en déduit la taille de la fenêtre. Il se base pour celà à la taille préférée des composants (en swing c'est sur, je ne me rappeles plus pour awt). Ce qui conféres la taille "idéale".
> JHelp
Messages postés
261
Date d'inscription
jeudi 5 septembre 2002
Statut
Membre
Dernière intervention
6 octobre 2005
11
Je me suis peut être mal exprimer sur pack(), il te faut placer les éléments de ta fenêtre à l'aide d'un Layout, et pack, lui calcul seulement la taille des composants en fonction du Layout choisit, et de la taille préférée des composants. et en déduit la taille de la fenêtre.
En fait il n'est pas nécessaire de bien connaître awt, juste Graphics, et encore au début tu n'en aura pas besoin.
Tu mélange implements et extends. Je te conseil de chercher un cours sur Java, sur le site de SUN www.java.sun.com il y en a (in english), et la notion d'objet, car il me semble que c'est notions de bases ne sont pas clair dans ta tête.
Le mot clef extends signifie, hérite de. Tu as public class MaClasse extends Frame, celà signifie, que MaClasse est une Frame, c'est à dire une fenêtre d'application, qui posséde les méthodes et champs public et protected de Frame, à laquelle tu peux ajouter des composants, des méthodes et des champs.
Le mot clef implements signifie, implémente. C'est à dire que ta classe peut être regarder comme une des interface qui suit, c'est à dire que ta classe doit possédé les méthodes de ces interfaces.
Quand tu écris :
public class MaFrame extends JFrame
{
     public MaClasse()
     {
        //du code
     }
}


En fait le constructeur MaClasse, fait appel au constructeur de JFrame sans argument, et là une fenêtre vide est mise en place en mémoire, puis il exute le code à l'intérieur du constructeur.

JHelp
Messages postés
249
Date d'inscription
mardi 16 juillet 2002
Statut
Membre
Dernière intervention
7 août 2003
2
-------------------------------
Réponse au message :
En fait ce que je ne connaissais pas l'effet exacte de implement dans une classe. Par contre j'ai l'habitude d'utiliser l'héritage en C++. Donc je ne savais pas les différences exactes entre les deux mots réservés.

Je me suis procuré le cours du C à Java car celui que j'avais avant n'était pas assez aprofondi. Et puis l'anglais je ne suis pas trop fort.

merci pour toutes tes précisions ;)
-------------------------------

> Je me suis peut être mal exprimer sur pack(), il te faut placer les éléments de ta fenêtre à l'aide d'un Layout, et pack, lui calcul seulement la taille des composants en fonction du Layout choisit, et de la taille préférée des composants. et en déduit la taille de la fenêtre.
> En fait il n'est pas nécessaire de bien connaître awt, juste Graphics, et encore au début tu n'en aura pas besoin.
> Tu mélange implements et extends. Je te conseil de chercher un cours sur Java, sur le site de SUN www.java.sun.com il y en a (in english), et la notion d'objet, car il me semble que c'est notions de bases ne sont pas clair dans ta tête.
> Le mot clef extends signifie, hérite de. Tu as public class MaClasse extends Frame, celà signifie, que MaClasse est une Frame, c'est à dire une fenêtre d'application, qui posséde les méthodes et champs public et protected de Frame, à laquelle tu peux ajouter des composants, des méthodes et des champs.
> Le mot clef implements signifie, implémente. C'est à dire que ta classe peut être regarder comme une des interface qui suit, c'est à dire que ta classe doit possédé les méthodes de ces interfaces.
> Quand tu écris :
>
> public class MaFrame extends JFrame
> {
>      public MaClasse()
>      {
>         //du code
>      }
> }
> 

>
> En fait le constructeur MaClasse, fait appel au constructeur de JFrame sans argument, et là une fenêtre vide est mise en place en mémoire, puis il exute le code à l'intérieur du constructeur.
>
> JHelp
Messages postés
1
Date d'inscription
mardi 8 avril 2008
Statut
Membre
Dernière intervention
4 mai 2008

salut tout le monde