Bonjour, voici la situation et j'espere que l'on pourra m'eclairer.. :
Jai deux JComponents. L'un s'appelle "Tracer"; l'autre, sur le modele du
CoordinatesDemo sur le site java.sun.com, implemente MouseInputListener et
étend JComponent, et s'appelle "Mouse".
Mouse est donc un JComponent, qui a pour MouseMotionListener et
MouseListener luimeme. Sa methode paintComponent est redefinie pour
permettre d'afficher un petit carré sous le clic, ou un rectangle de
selection.
Dans Tracer, j'ai donc ajouté un composant Mouse, le but etant que dans ce
Tracer, Mouse recupere les evenements relatifs a la souris et dessine ce
qu'il faut.
1er probleme, la methode paintComponent de Tracer ne veut pas peindre Mouse,
même si je la redefinis et fais un paintChildren (J'ai bien verifié que
Mouse faisait partie des components de Tracer, donc normalement ça devrait
marcher). J'ai reglé ce probleme en appelant "((JComponent)
this.getComponent(0)).paint(g);" explicitement, et en changeant ma methode
"paintComponent" de Mouse en "paint" tout court, mais je ne comprend pas
pourquoi c'est necessaire ?
2e problème, la souris ne recupere rien du tout, comme le prouve le
println("Clic !") dans "mouseClicked(MouseEvent e)", qui ne s'affiche
jamais. En cherchant pourquoi rien ne se passe, je me suis rendu compte que
les methodes getWidth et getHeight dans Mouse, retournent toujours 0, malgré
des appels à setPreferredSize(new Dimension(400,300)) ou meme à
setMinimumSize(new Dim....). Est-ce que c'est bien ce qui empeche la souris
de fonctionner ?
J'ai l'impression que ces 2 problemes decoulent tous deux d'une mauvaise
comprehension de ma part en ce qui concerne la façon d'utiliser les
JComponents, donc si vous pouviez m'aider ça serait tres sympa :)
public static void main(String[] args) { //Schedule a job for the event-dispatching thread: //creating and showing this application's GUI. javax.swing.SwingUtilities.invokeLater(new Runnable() { public void run() { createAndShowGUI(); } }); }
public static class Mouse extends JComponent implements MouseInputListener { Point point = null; Tracer controller; Dimension preferredSize = new Dimension(400,300); static final long serialVersionUID = 99999;
public Mouse(Tracer controller) { this.controller = controller;
//If user has chosen a point, paint a small dot on top. if (point != null) { g.setColor(getForeground()); g.fillRect(point.x - 3, point.y - 3, 7, 7); } }
protected void paintComponent(Graphics g) {
System.out.println("Paint mouse !"); //Paint background if we're opaque. if (isOpaque()) { g.setColor(getBackground()); g.fillRect(0, 0, getWidth(), getHeight()); }
//If user has chosen a point, paint a small dot on top. if (point != null) { g.setColor(getForeground()); g.fillRect(point.x - 3, point.y - 3, 7, 7); } }
//Methods required by the MouseInputListener interface. public void mouseClicked(MouseEvent e) { System.out.println("Click !"); int x = e.getX(); int y = e.getY(); if (point == null) { point = new Point(x, y); } else { point.x = x; point.y = y; } repaint(); }
public void mouseMoved(MouseEvent e) { System.out.println("move !"); }
public void mouseExited(MouseEvent e) { }
public void mouseReleased(MouseEvent e) { } public void mouseEntered(MouseEvent e) { } public void mousePressed(MouseEvent e) { } public void mouseDragged(MouseEvent e) { } } }
Exemple : copier/coller dans Tracer.java
-----------------------------------------
public static void main(String[] args) {
//Schedule a job for the event-dispatching thread:
//creating and showing this application's GUI.
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});
}
public static class Mouse extends JComponent
implements MouseInputListener {
Point point = null;
Tracer controller;
Dimension preferredSize = new Dimension(400,300);
static final long serialVersionUID = 99999;
public Mouse(Tracer controller) {
this.controller = controller;
//If user has chosen a point, paint a small dot on top.
if (point != null) {
g.setColor(getForeground());
g.fillRect(point.x - 3, point.y - 3, 7, 7);
}
}
protected void paintComponent(Graphics g) {
System.out.println("Paint mouse !");
//Paint background if we're opaque.
if (isOpaque()) {
g.setColor(getBackground());
g.fillRect(0, 0, getWidth(), getHeight());
}
//If user has chosen a point, paint a small dot on top.
if (point != null) {
g.setColor(getForeground());
g.fillRect(point.x - 3, point.y - 3, 7, 7);
}
}
//Methods required by the MouseInputListener interface.
public void mouseClicked(MouseEvent e) {
System.out.println("Click !");
int x = e.getX();
int y = e.getY();
if (point == null) {
point = new Point(x, y);
} else {
point.x = x;
point.y = y;
}
repaint();
}
public void mouseMoved(MouseEvent e) {
System.out.println("move !");
}
public void mouseExited(MouseEvent e) {
}
public void mouseReleased(MouseEvent e) { }
public void mouseEntered(MouseEvent e) { }
public void mousePressed(MouseEvent e) { }
public void mouseDragged(MouseEvent e) { }
}
}
public static void main(String[] args) { //Schedule a job for the event-dispatching thread: //creating and showing this application's GUI. javax.swing.SwingUtilities.invokeLater(new Runnable() { public void run() { createAndShowGUI(); } }); }
public static class Mouse extends JComponent implements MouseInputListener { Point point = null; Tracer controller; Dimension preferredSize = new Dimension(400,300); static final long serialVersionUID = 99999;
public Mouse(Tracer controller) { this.controller = controller;
//If user has chosen a point, paint a small dot on top. if (point != null) { g.setColor(getForeground()); g.fillRect(point.x - 3, point.y - 3, 7, 7); } }
protected void paintComponent(Graphics g) {
System.out.println("Paint mouse !"); //Paint background if we're opaque. if (isOpaque()) { g.setColor(getBackground()); g.fillRect(0, 0, getWidth(), getHeight()); }
//If user has chosen a point, paint a small dot on top. if (point != null) { g.setColor(getForeground()); g.fillRect(point.x - 3, point.y - 3, 7, 7); } }
//Methods required by the MouseInputListener interface. public void mouseClicked(MouseEvent e) { System.out.println("Click !"); int x = e.getX(); int y = e.getY(); if (point == null) { point = new Point(x, y); } else { point.x = x; point.y = y; } repaint(); }
public void mouseMoved(MouseEvent e) { System.out.println("move !"); }
public void mouseExited(MouseEvent e) { }
public void mouseReleased(MouseEvent e) { } public void mouseEntered(MouseEvent e) { } public void mousePressed(MouseEvent e) { } public void mouseDragged(MouseEvent e) { } } }
TestMan
Bonsoir,
J'avoue que je comprend pas trop ton code ... il me parrait bien complexe pour quelque chose qui semblerait ne pas nécessiter autant de surcharge.
En premier, lire http://java.sun.com/docs/books/tutorial/uiswing/14painting/concepts.html
Un petit tour ensuite sur http://java.sun.com/docs/books/tutorial/uiswing/14painting/practice.html
Puis faire du nétoyage.
Par exemple : ((JComponent) this.getComponent(0)).paint(g);
J'ai jamais vu ce genre de code dans du swing ;-)
Si tu as besoin de plus d'aide, merci de reposer ici avec une description précise de ce que tu cherche à faire au final ....
A+
TM
Michael wrote:
Bonjour, voici la situation et j'espere que l'on pourra m'eclairer.. :
Jai deux JComponents. L'un s'appelle "Tracer"; l'autre, sur le modele du CoordinatesDemo sur le site java.sun.com, implemente MouseInputListener et étend JComponent, et s'appelle "Mouse".
Mouse est donc un JComponent, qui a pour MouseMotionListener et MouseListener luimeme. Sa methode paintComponent est redefinie pour permettre d'afficher un petit carré sous le clic, ou un rectangle de selection.
Dans Tracer, j'ai donc ajouté un composant Mouse, le but etant que dans ce Tracer, Mouse recupere les evenements relatifs a la souris et dessine ce qu'il faut.
1er probleme, la methode paintComponent de Tracer ne veut pas peindre Mouse, même si je la redefinis et fais un paintChildren (J'ai bien verifié que Mouse faisait partie des components de Tracer, donc normalement ça devrait marcher). J'ai reglé ce probleme en appelant "((JComponent) this.getComponent(0)).paint(g);" explicitement, et en changeant ma methode "paintComponent" de Mouse en "paint" tout court, mais je ne comprend pas pourquoi c'est necessaire ?
2e problème, la souris ne recupere rien du tout, comme le prouve le println("Clic !") dans "mouseClicked(MouseEvent e)", qui ne s'affiche jamais. En cherchant pourquoi rien ne se passe, je me suis rendu compte que les methodes getWidth et getHeight dans Mouse, retournent toujours 0, malgré des appels à setPreferredSize(new Dimension(400,300)) ou meme à setMinimumSize(new Dim....). Est-ce que c'est bien ce qui empeche la souris de fonctionner ?
J'ai l'impression que ces 2 problemes decoulent tous deux d'une mauvaise comprehension de ma part en ce qui concerne la façon d'utiliser les JComponents, donc si vous pouviez m'aider ça serait tres sympa :)
Bonsoir,
J'avoue que je comprend pas trop ton code ... il me parrait bien
complexe pour quelque chose qui semblerait ne pas nécessiter autant de
surcharge.
En premier, lire
http://java.sun.com/docs/books/tutorial/uiswing/14painting/concepts.html
Un petit tour ensuite sur
http://java.sun.com/docs/books/tutorial/uiswing/14painting/practice.html
Puis faire du nétoyage.
Par exemple :
((JComponent) this.getComponent(0)).paint(g);
J'ai jamais vu ce genre de code dans du swing ;-)
Si tu as besoin de plus d'aide, merci de reposer ici avec une
description précise de ce que tu cherche à faire au final ....
A+
TM
Michael wrote:
Bonjour, voici la situation et j'espere que l'on pourra m'eclairer.. :
Jai deux JComponents. L'un s'appelle "Tracer"; l'autre, sur le modele du
CoordinatesDemo sur le site java.sun.com, implemente MouseInputListener et
étend JComponent, et s'appelle "Mouse".
Mouse est donc un JComponent, qui a pour MouseMotionListener et
MouseListener luimeme. Sa methode paintComponent est redefinie pour
permettre d'afficher un petit carré sous le clic, ou un rectangle de
selection.
Dans Tracer, j'ai donc ajouté un composant Mouse, le but etant que dans ce
Tracer, Mouse recupere les evenements relatifs a la souris et dessine ce
qu'il faut.
1er probleme, la methode paintComponent de Tracer ne veut pas peindre Mouse,
même si je la redefinis et fais un paintChildren (J'ai bien verifié que
Mouse faisait partie des components de Tracer, donc normalement ça devrait
marcher). J'ai reglé ce probleme en appelant "((JComponent)
this.getComponent(0)).paint(g);" explicitement, et en changeant ma methode
"paintComponent" de Mouse en "paint" tout court, mais je ne comprend pas
pourquoi c'est necessaire ?
2e problème, la souris ne recupere rien du tout, comme le prouve le
println("Clic !") dans "mouseClicked(MouseEvent e)", qui ne s'affiche
jamais. En cherchant pourquoi rien ne se passe, je me suis rendu compte que
les methodes getWidth et getHeight dans Mouse, retournent toujours 0, malgré
des appels à setPreferredSize(new Dimension(400,300)) ou meme à
setMinimumSize(new Dim....). Est-ce que c'est bien ce qui empeche la souris
de fonctionner ?
J'ai l'impression que ces 2 problemes decoulent tous deux d'une mauvaise
comprehension de ma part en ce qui concerne la façon d'utiliser les
JComponents, donc si vous pouviez m'aider ça serait tres sympa :)
J'avoue que je comprend pas trop ton code ... il me parrait bien complexe pour quelque chose qui semblerait ne pas nécessiter autant de surcharge.
En premier, lire http://java.sun.com/docs/books/tutorial/uiswing/14painting/concepts.html
Un petit tour ensuite sur http://java.sun.com/docs/books/tutorial/uiswing/14painting/practice.html
Puis faire du nétoyage.
Par exemple : ((JComponent) this.getComponent(0)).paint(g);
J'ai jamais vu ce genre de code dans du swing ;-)
Si tu as besoin de plus d'aide, merci de reposer ici avec une description précise de ce que tu cherche à faire au final ....
A+
TM
Michael wrote:
Bonjour, voici la situation et j'espere que l'on pourra m'eclairer.. :
Jai deux JComponents. L'un s'appelle "Tracer"; l'autre, sur le modele du CoordinatesDemo sur le site java.sun.com, implemente MouseInputListener et étend JComponent, et s'appelle "Mouse".
Mouse est donc un JComponent, qui a pour MouseMotionListener et MouseListener luimeme. Sa methode paintComponent est redefinie pour permettre d'afficher un petit carré sous le clic, ou un rectangle de selection.
Dans Tracer, j'ai donc ajouté un composant Mouse, le but etant que dans ce Tracer, Mouse recupere les evenements relatifs a la souris et dessine ce qu'il faut.
1er probleme, la methode paintComponent de Tracer ne veut pas peindre Mouse, même si je la redefinis et fais un paintChildren (J'ai bien verifié que Mouse faisait partie des components de Tracer, donc normalement ça devrait marcher). J'ai reglé ce probleme en appelant "((JComponent) this.getComponent(0)).paint(g);" explicitement, et en changeant ma methode "paintComponent" de Mouse en "paint" tout court, mais je ne comprend pas pourquoi c'est necessaire ?
2e problème, la souris ne recupere rien du tout, comme le prouve le println("Clic !") dans "mouseClicked(MouseEvent e)", qui ne s'affiche jamais. En cherchant pourquoi rien ne se passe, je me suis rendu compte que les methodes getWidth et getHeight dans Mouse, retournent toujours 0, malgré des appels à setPreferredSize(new Dimension(400,300)) ou meme à setMinimumSize(new Dim....). Est-ce que c'est bien ce qui empeche la souris de fonctionner ?
J'ai l'impression que ces 2 problemes decoulent tous deux d'une mauvaise comprehension de ma part en ce qui concerne la façon d'utiliser les JComponents, donc si vous pouviez m'aider ça serait tres sympa :)
Michael
Bonsoir,
Si tu ne l'as jamais vu, c'est que ce n'est pas un truc qu'on fait habituellement, mais que jai utilisé ici pour regler partiellement un de mes problemes, faute de mieux.
Je ne cherchais pas d'aide sur un probleme de conception mais sur un probleme de comprehension, donc expliquer ce que je veux faire n'aurait que detourné certains du vrai probleme; quoiqu'il en soit, quelqu'un sur comp.lang.java.help m'a donné la solution, il s'agit simplement du fait que les JComponents ne possedent pas de layout par defaut.
Cordialement, Michael Roche
"TestMan" a écrit dans le message de news: 4382424a$0$13083$
Bonsoir,
J'avoue que je comprend pas trop ton code ... il me parrait bien complexe pour quelque chose qui semblerait ne pas nécessiter autant de surcharge.
En premier, lire http://java.sun.com/docs/books/tutorial/uiswing/14painting/concepts.html
Un petit tour ensuite sur http://java.sun.com/docs/books/tutorial/uiswing/14painting/practice.html
Puis faire du nétoyage.
Par exemple : ((JComponent) this.getComponent(0)).paint(g);
J'ai jamais vu ce genre de code dans du swing ;-)
Si tu as besoin de plus d'aide, merci de reposer ici avec une description précise de ce que tu cherche à faire au final ....
A+
TM
Michael wrote:
Bonjour, voici la situation et j'espere que l'on pourra m'eclairer.. :
Jai deux JComponents. L'un s'appelle "Tracer"; l'autre, sur le modele du CoordinatesDemo sur le site java.sun.com, implemente MouseInputListener et
étend JComponent, et s'appelle "Mouse".
Mouse est donc un JComponent, qui a pour MouseMotionListener et MouseListener luimeme. Sa methode paintComponent est redefinie pour permettre d'afficher un petit carré sous le clic, ou un rectangle de selection.
Dans Tracer, j'ai donc ajouté un composant Mouse, le but etant que dans ce
Tracer, Mouse recupere les evenements relatifs a la souris et dessine ce qu'il faut.
1er probleme, la methode paintComponent de Tracer ne veut pas peindre Mouse,
même si je la redefinis et fais un paintChildren (J'ai bien verifié que Mouse faisait partie des components de Tracer, donc normalement ça devrait
marcher). J'ai reglé ce probleme en appelant "((JComponent) this.getComponent(0)).paint(g);" explicitement, et en changeant ma methode
"paintComponent" de Mouse en "paint" tout court, mais je ne comprend pas pourquoi c'est necessaire ?
2e problème, la souris ne recupere rien du tout, comme le prouve le println("Clic !") dans "mouseClicked(MouseEvent e)", qui ne s'affiche jamais. En cherchant pourquoi rien ne se passe, je me suis rendu compte que
les methodes getWidth et getHeight dans Mouse, retournent toujours 0, malgré
des appels à setPreferredSize(new Dimension(400,300)) ou meme à setMinimumSize(new Dim....). Est-ce que c'est bien ce qui empeche la souris
de fonctionner ?
J'ai l'impression que ces 2 problemes decoulent tous deux d'une mauvaise comprehension de ma part en ce qui concerne la façon d'utiliser les JComponents, donc si vous pouviez m'aider ça serait tres sympa :)
Bonsoir,
Si tu ne l'as jamais vu, c'est que ce n'est pas un truc qu'on fait
habituellement, mais que jai utilisé ici pour regler partiellement un de mes
problemes, faute de mieux.
Je ne cherchais pas d'aide sur un probleme de conception mais sur un
probleme de comprehension, donc expliquer ce que je veux faire n'aurait que
detourné certains du vrai probleme; quoiqu'il en soit, quelqu'un sur
comp.lang.java.help m'a donné la solution, il s'agit simplement du fait que
les JComponents ne possedent pas de layout par defaut.
Cordialement,
Michael Roche
"TestMan" <none@example.com> a écrit dans le message de news:
4382424a$0$13083$636a15ce@news.free.fr...
Bonsoir,
J'avoue que je comprend pas trop ton code ... il me parrait bien
complexe pour quelque chose qui semblerait ne pas nécessiter autant de
surcharge.
En premier, lire
http://java.sun.com/docs/books/tutorial/uiswing/14painting/concepts.html
Un petit tour ensuite sur
http://java.sun.com/docs/books/tutorial/uiswing/14painting/practice.html
Puis faire du nétoyage.
Par exemple :
((JComponent) this.getComponent(0)).paint(g);
J'ai jamais vu ce genre de code dans du swing ;-)
Si tu as besoin de plus d'aide, merci de reposer ici avec une
description précise de ce que tu cherche à faire au final ....
A+
TM
Michael wrote:
Bonjour, voici la situation et j'espere que l'on pourra m'eclairer.. :
Jai deux JComponents. L'un s'appelle "Tracer"; l'autre, sur le modele du
CoordinatesDemo sur le site java.sun.com, implemente MouseInputListener
et
étend JComponent, et s'appelle "Mouse".
Mouse est donc un JComponent, qui a pour MouseMotionListener et
MouseListener luimeme. Sa methode paintComponent est redefinie pour
permettre d'afficher un petit carré sous le clic, ou un rectangle de
selection.
Dans Tracer, j'ai donc ajouté un composant Mouse, le but etant que dans
ce
Tracer, Mouse recupere les evenements relatifs a la souris et dessine ce
qu'il faut.
1er probleme, la methode paintComponent de Tracer ne veut pas peindre
Mouse,
même si je la redefinis et fais un paintChildren (J'ai bien verifié que
Mouse faisait partie des components de Tracer, donc normalement ça
devrait
marcher). J'ai reglé ce probleme en appelant "((JComponent)
this.getComponent(0)).paint(g);" explicitement, et en changeant ma
methode
"paintComponent" de Mouse en "paint" tout court, mais je ne comprend pas
pourquoi c'est necessaire ?
2e problème, la souris ne recupere rien du tout, comme le prouve le
println("Clic !") dans "mouseClicked(MouseEvent e)", qui ne s'affiche
jamais. En cherchant pourquoi rien ne se passe, je me suis rendu compte
que
les methodes getWidth et getHeight dans Mouse, retournent toujours 0,
malgré
des appels à setPreferredSize(new Dimension(400,300)) ou meme à
setMinimumSize(new Dim....). Est-ce que c'est bien ce qui empeche la
souris
de fonctionner ?
J'ai l'impression que ces 2 problemes decoulent tous deux d'une mauvaise
comprehension de ma part en ce qui concerne la façon d'utiliser les
JComponents, donc si vous pouviez m'aider ça serait tres sympa :)
Si tu ne l'as jamais vu, c'est que ce n'est pas un truc qu'on fait habituellement, mais que jai utilisé ici pour regler partiellement un de mes problemes, faute de mieux.
Je ne cherchais pas d'aide sur un probleme de conception mais sur un probleme de comprehension, donc expliquer ce que je veux faire n'aurait que detourné certains du vrai probleme; quoiqu'il en soit, quelqu'un sur comp.lang.java.help m'a donné la solution, il s'agit simplement du fait que les JComponents ne possedent pas de layout par defaut.
Cordialement, Michael Roche
"TestMan" a écrit dans le message de news: 4382424a$0$13083$
Bonsoir,
J'avoue que je comprend pas trop ton code ... il me parrait bien complexe pour quelque chose qui semblerait ne pas nécessiter autant de surcharge.
En premier, lire http://java.sun.com/docs/books/tutorial/uiswing/14painting/concepts.html
Un petit tour ensuite sur http://java.sun.com/docs/books/tutorial/uiswing/14painting/practice.html
Puis faire du nétoyage.
Par exemple : ((JComponent) this.getComponent(0)).paint(g);
J'ai jamais vu ce genre de code dans du swing ;-)
Si tu as besoin de plus d'aide, merci de reposer ici avec une description précise de ce que tu cherche à faire au final ....
A+
TM
Michael wrote:
Bonjour, voici la situation et j'espere que l'on pourra m'eclairer.. :
Jai deux JComponents. L'un s'appelle "Tracer"; l'autre, sur le modele du CoordinatesDemo sur le site java.sun.com, implemente MouseInputListener et
étend JComponent, et s'appelle "Mouse".
Mouse est donc un JComponent, qui a pour MouseMotionListener et MouseListener luimeme. Sa methode paintComponent est redefinie pour permettre d'afficher un petit carré sous le clic, ou un rectangle de selection.
Dans Tracer, j'ai donc ajouté un composant Mouse, le but etant que dans ce
Tracer, Mouse recupere les evenements relatifs a la souris et dessine ce qu'il faut.
1er probleme, la methode paintComponent de Tracer ne veut pas peindre Mouse,
même si je la redefinis et fais un paintChildren (J'ai bien verifié que Mouse faisait partie des components de Tracer, donc normalement ça devrait
marcher). J'ai reglé ce probleme en appelant "((JComponent) this.getComponent(0)).paint(g);" explicitement, et en changeant ma methode
"paintComponent" de Mouse en "paint" tout court, mais je ne comprend pas pourquoi c'est necessaire ?
2e problème, la souris ne recupere rien du tout, comme le prouve le println("Clic !") dans "mouseClicked(MouseEvent e)", qui ne s'affiche jamais. En cherchant pourquoi rien ne se passe, je me suis rendu compte que
les methodes getWidth et getHeight dans Mouse, retournent toujours 0, malgré
des appels à setPreferredSize(new Dimension(400,300)) ou meme à setMinimumSize(new Dim....). Est-ce que c'est bien ce qui empeche la souris
de fonctionner ?
J'ai l'impression que ces 2 problemes decoulent tous deux d'une mauvaise comprehension de ma part en ce qui concerne la façon d'utiliser les JComponents, donc si vous pouviez m'aider ça serait tres sympa :)