Ce code affiche une fenêtre avec plusieurs carrés imbriqués de couleurs
différentes.
D'après ce que je comprend du code, la fonction paint s'occupe de
colorier les carrés en différentes couleurs. Le problème est que dans
ma compréhension des choses, paint est juste une fonction qui est
déclarée au sein de la classe FSQuares. Je ne vois donc pas où cette
fonction paint est appelée pour être exécutée ?
Pardon pour la trivialité de cette question et merci d'avance à qui
pourra m'éclairer.
Ce code affiche une fenêtre avec plusieurs carrés imbriqués de co uleurs différentes.
D'après ce que je comprend du code, la fonction paint s'occupe de colorier les carrés en différentes couleurs. Le problème est que dans ma compréhension des choses, paint est juste une fonction qui est déclarée au sein de la classe FSQuares. Je ne vois donc pas où c ette fonction paint est appelée pour être exécutée ?
Pardon pour la trivialité de cette question et merci d'avance à qui pourra m'éclairer.
aucun problème
class FSquares extends Canvas { ... public void paint(Graphics g) {
en gros tu surcharges la fonction paint de l'obj Canvas le jmv va lire ton obj FSquares qui est une spécialisation d'un obj Canvas le fameux " extends Canvas" dans class FSquares extends Canvas {
donc la jmv sait qu'il y a une fonction paint, elle va donc la chercher et l'afficher
tu as aussi une fontion paint dans ta frame, une bonne source d'info et d'apprentissage, recherche sur ton disque un fichier src.zip puis un fichier frame.java
tu vas tomber sur
* * @version 1.163, 10/31/08 * @author Sami Shaio * @see WindowEvent * @see Window#addWindowListener * @since JDK1.0 */ public class Frame extends Window implements MenuContainer {
puis le fichier window.java
* @version 1.240, 03/15/06 * @author Sami Shaio * @author Arthur van Hoff * @see WindowEvent * @see #addWindowListener * @see java.awt.BorderLayout * @since JDK1.0 */ public class Window extends Container implements Accessible {
et dans le fichier container.java tu auras ta fonction paint
mais il vaut mieux utiliser un obj canvas c'est plus élégant bien que pour des "gros" projets je préfère utiliser un obj graghic q ue je passe à la fonction paint qui se débrouille ,l'on appelle cela un e frame buffeur
par contre oublies l'awt et utilises plutôt les objs swing les obj graphiques avec un j devant
Ce code affiche une fenêtre avec plusieurs carrés imbriqués de co uleurs
différentes.
D'après ce que je comprend du code, la fonction paint s'occupe de
colorier les carrés en différentes couleurs. Le problème est que dans
ma compréhension des choses, paint est juste une fonction qui est
déclarée au sein de la classe FSQuares. Je ne vois donc pas où c ette
fonction paint est appelée pour être exécutée ?
Pardon pour la trivialité de cette question et merci d'avance à qui
pourra m'éclairer.
aucun problème
class FSquares extends Canvas {
...
public void paint(Graphics g) {
en gros tu surcharges la fonction paint de l'obj Canvas
le jmv va lire ton obj FSquares qui est une spécialisation d'un obj
Canvas le fameux " extends Canvas" dans class FSquares extends Canvas {
donc la jmv sait qu'il y a une fonction paint, elle va donc la chercher
et l'afficher
tu as aussi une fontion paint dans ta frame, une bonne source d'info et
d'apprentissage, recherche sur ton disque un fichier src.zip
puis un fichier frame.java
tu vas tomber sur
*
* @version 1.163, 10/31/08
* @author Sami Shaio
* @see WindowEvent
* @see Window#addWindowListener
* @since JDK1.0
*/
public class Frame extends Window implements MenuContainer {
puis le fichier window.java
* @version 1.240, 03/15/06
* @author Sami Shaio
* @author Arthur van Hoff
* @see WindowEvent
* @see #addWindowListener
* @see java.awt.BorderLayout
* @since JDK1.0
*/
public class Window extends Container implements Accessible {
et dans le fichier container.java tu auras ta fonction paint
mais il vaut mieux utiliser un obj canvas c'est plus élégant
bien que pour des "gros" projets je préfère utiliser un obj graghic q ue
je passe à la fonction paint qui se débrouille ,l'on appelle cela un e
frame buffeur
par contre oublies l'awt et utilises plutôt les objs swing les obj
graphiques avec un j devant
Ce code affiche une fenêtre avec plusieurs carrés imbriqués de co uleurs différentes.
D'après ce que je comprend du code, la fonction paint s'occupe de colorier les carrés en différentes couleurs. Le problème est que dans ma compréhension des choses, paint est juste une fonction qui est déclarée au sein de la classe FSQuares. Je ne vois donc pas où c ette fonction paint est appelée pour être exécutée ?
Pardon pour la trivialité de cette question et merci d'avance à qui pourra m'éclairer.
aucun problème
class FSquares extends Canvas { ... public void paint(Graphics g) {
en gros tu surcharges la fonction paint de l'obj Canvas le jmv va lire ton obj FSquares qui est une spécialisation d'un obj Canvas le fameux " extends Canvas" dans class FSquares extends Canvas {
donc la jmv sait qu'il y a une fonction paint, elle va donc la chercher et l'afficher
tu as aussi une fontion paint dans ta frame, une bonne source d'info et d'apprentissage, recherche sur ton disque un fichier src.zip puis un fichier frame.java
tu vas tomber sur
* * @version 1.163, 10/31/08 * @author Sami Shaio * @see WindowEvent * @see Window#addWindowListener * @since JDK1.0 */ public class Frame extends Window implements MenuContainer {
puis le fichier window.java
* @version 1.240, 03/15/06 * @author Sami Shaio * @author Arthur van Hoff * @see WindowEvent * @see #addWindowListener * @see java.awt.BorderLayout * @since JDK1.0 */ public class Window extends Container implements Accessible {
et dans le fichier container.java tu auras ta fonction paint
mais il vaut mieux utiliser un obj canvas c'est plus élégant bien que pour des "gros" projets je préfère utiliser un obj graghic q ue je passe à la fonction paint qui se débrouille ,l'on appelle cela un e frame buffeur
par contre oublies l'awt et utilises plutôt les objs swing les obj graphiques avec un j devant
mes 3 centimes d'euro
remy
-- http://remyaumeunier.chez-alice.fr/
Alain Ketterlin
patrick writes:
public class FillSquares extends Frame { public static void main(String arg[]) { new FillSquares(); } FillSquares() { enableEvents(AWTEvent.WINDOW_EVENT_MASK); FSquares squares = new FSquares(); add(squares); pack(); show(); } public void processWindowEvent(WindowEvent event) { if(event.getID() == WindowEvent.WINDOW_CLOSING) System.exit(0); } }
Regarde où tu "perds le contrôle" de ton application : main() app elle le constructeur de FillSquares, qui construit une Frame (en fait lui-même ), qui appelle show().
Regarde où tu "perds le contrôle" de ton application : main() app elle le
constructeur de FillSquares, qui construit une Frame (en fait lui-même ),
qui appelle show().
Regarde où tu "perds le contrôle" de ton application : main() app elle le constructeur de FillSquares, qui construit une Frame (en fait lui-même ), qui appelle show().
pour être plus clair, si la question est je ne comprends pas pourquoi cela marche puisque je n'appelle pas la fonction paint quand je dis
" la jmv sait qu'il y a une fonction paint, elle va donc la chercher et l'afficher " cela veut dire que dans le processus d'initialisation des d'obj, il y a un appel à fct paint et c'est ma surcharge qui est exécutée
en gros et en détail (pour paint c'est exactement la même chose)
un seul fichier test.java je sais c'est pas bien
********************* public class test { public static void main(String args[]) { FillSquares fs=new FillSquares(); fs.affiche(); } }
class A { A() { } public void affiche() { info(); } public void info() { System.out.println("a"); } } class B extends A { B() { super(); } public void affiche() { infoB(); super.affiche(); } public void infoB() { System.out.println("b"); }
} class C extends B { C() { super(); } public void affiche() { infoC(); super.affiche(); } public void infoC() { System.out.println("c"); }
} class FillSquares extends C { FillSquares() { super(); } public void info() { System.out.println("FSquares"); }
}
*******************
:~/Bureau$ javac test.java :~/Bureau$ java test c b FSquares :~/Bureau$
le même sans la fonction info dans FillSquares
:~/Bureau$ javac test.java :~/Bureau$ java test c b a :~/Bureau$
c'est en gros toute la puissance de la programmation obj
remy
ps les constructeurs sont inutiles mais je les ai laissés pour facilité la lecture
-- http://remyaumeunier.chez-alice.fr/
remy a écrit :
pour être plus clair, si la question est je ne comprends pas pourquoi
cela marche puisque je n'appelle pas la fonction paint
quand je dis
" la jmv sait qu'il y a une fonction paint, elle va donc la chercher
et l'afficher " cela veut dire que dans le processus d'initialisation
des d'obj, il y a un appel à fct paint et c'est ma surcharge qui est
exécutée
en gros et en détail (pour paint c'est exactement la même chose)
un seul fichier test.java je sais c'est pas bien
*********************
public class test
{
public static void main(String args[])
{
FillSquares fs=new FillSquares();
fs.affiche();
}
}
class A
{
A()
{
}
public void affiche()
{
info();
}
public void info()
{
System.out.println("a");
}
}
class B extends A
{
B()
{
super();
}
public void affiche()
{
infoB();
super.affiche();
}
public void infoB()
{
System.out.println("b");
}
}
class C extends B
{
C()
{
super();
}
public void affiche()
{
infoC();
super.affiche();
}
public void infoC()
{
System.out.println("c");
}
}
class FillSquares extends C
{
FillSquares()
{
super();
}
public void info()
{
System.out.println("FSquares");
}
}
*******************
remy@remy:~/Bureau$ javac test.java
remy@remy:~/Bureau$ java test
c
b
FSquares
remy@remy:~/Bureau$
le même sans la fonction info dans FillSquares
remy@remy:~/Bureau$ javac test.java
remy@remy:~/Bureau$ java test
c
b
a
remy@remy:~/Bureau$
c'est en gros toute la puissance de la programmation obj
remy
ps les constructeurs sont inutiles mais je les ai laissés pour
facilité la lecture
pour être plus clair, si la question est je ne comprends pas pourquoi cela marche puisque je n'appelle pas la fonction paint quand je dis
" la jmv sait qu'il y a une fonction paint, elle va donc la chercher et l'afficher " cela veut dire que dans le processus d'initialisation des d'obj, il y a un appel à fct paint et c'est ma surcharge qui est exécutée
en gros et en détail (pour paint c'est exactement la même chose)
un seul fichier test.java je sais c'est pas bien
********************* public class test { public static void main(String args[]) { FillSquares fs=new FillSquares(); fs.affiche(); } }
class A { A() { } public void affiche() { info(); } public void info() { System.out.println("a"); } } class B extends A { B() { super(); } public void affiche() { infoB(); super.affiche(); } public void infoB() { System.out.println("b"); }
} class C extends B { C() { super(); } public void affiche() { infoC(); super.affiche(); } public void infoC() { System.out.println("c"); }
} class FillSquares extends C { FillSquares() { super(); } public void info() { System.out.println("FSquares"); }
}
*******************
:~/Bureau$ javac test.java :~/Bureau$ java test c b FSquares :~/Bureau$
le même sans la fonction info dans FillSquares
:~/Bureau$ javac test.java :~/Bureau$ java test c b a :~/Bureau$
c'est en gros toute la puissance de la programmation obj
remy
ps les constructeurs sont inutiles mais je les ai laissés pour facilité la lecture
-- http://remyaumeunier.chez-alice.fr/
Patrick
Merci pour vos réponses. Je vais maintenant essayer de les comprendre ;-)
On 3/12/2010 10:48 AM, patrick wrote:
Bonjour, je débute en Java (et en programmation tout cours ...) et je ne comprend pas quelque chose dans le code ci dessous :
Ce code affiche une fenêtre avec plusieurs carrés imbriqués de couleurs différentes.
D'après ce que je comprend du code, la fonction paint s'occupe de colorier les carrés en différentes couleurs. Le problème est que dans ma compréhension des choses, paint est juste une fonction qui est déclarée au sein de la classe FSQuares. Je ne vois donc pas où cette fonction paint est appelée pour être exécutée ?
Pardon pour la trivialité de cette question et merci d'avance à qui pourra m'éclairer.
Patrick
Merci pour vos réponses. Je vais maintenant essayer de les comprendre ;-)
On 3/12/2010 10:48 AM, patrick wrote:
Bonjour, je débute en Java (et en programmation tout cours ...) et je ne
comprend pas quelque chose dans le code ci dessous :
Ce code affiche une fenêtre avec plusieurs carrés imbriqués de couleurs
différentes.
D'après ce que je comprend du code, la fonction paint s'occupe de
colorier les carrés en différentes couleurs. Le problème est que dans ma
compréhension des choses, paint est juste une fonction qui est déclarée
au sein de la classe FSQuares. Je ne vois donc pas où cette fonction
paint est appelée pour être exécutée ?
Pardon pour la trivialité de cette question et merci d'avance à qui
pourra m'éclairer.
Ce code affiche une fenêtre avec plusieurs carrés imbriqués de couleurs différentes.
D'après ce que je comprend du code, la fonction paint s'occupe de colorier les carrés en différentes couleurs. Le problème est que dans ma compréhension des choses, paint est juste une fonction qui est déclarée au sein de la classe FSQuares. Je ne vois donc pas où cette fonction paint est appelée pour être exécutée ?
Pardon pour la trivialité de cette question et merci d'avance à qui pourra m'éclairer.