[résolu] récupération données frame

perluce
[résolu] récupération données frame

Bonjour,

ce message est la suite de ce que j'ai posté avant sur la frame. En fait, cette frame va me servir de boîte de dialogue avec un panel. Il faut que je récupère ce qui a été sélectioné sur la frame pour après pouvoir dessiner sur mon panel. Ce que je me demande c'est comment je dois mettre la méhode pour dessiner dans le panel parce que je dois dessiner selon les options sélectionnées. J'espère que mon explication est assez claire

Merci d'avance

fredericmazue

Quote:
En fait, cette frame va me servir de boîte de dialogue

Et donc il serait mieux de la dériver de JDialog.
Oui je sais je me répète.

Et surtout je m'interroge. Que diable se passe-t-il dans le monde de l'informatique ?
Les débutants sont ils tous clonés à partir d'un modèle défectueux ?

- Tous ils bricolent en Java.
- Tous ils sont imperméables aux conseils les plus évidents.

Groumph... Que faire ?...
Après un an de contribution intensive à ce forum, je commence à entrevoir la réponse: la sieste :)
Ce sera pareil quant au résultat, mais ça aura au moins le mérite de me reposer :)

Niroken

Disons que j'ai l'impression que le sujet concernant
"la sélection sur panel" est un projet étudiant, donné
ou par une université ou une école et qu'ils doivent
respecter certaines contraintes données dans le sujet:

-Emploi de java
-Respecter les spécifications de l'énoncé
-Peut être restrictions a l'utilisation de certaines classes..

Enfin je dis cela parceque étant moi même étudiant,j'ai
déjà été confronté à cela:)

Pour te reprendre, même si à ton inverse j'avoue être favorable
à java pour une certaine simplicité d'utilisation, je ne pense
pas que ca soit par critère "esthétique" qu'ils l'ont choisi. :D

fredericmazue

Quote:
Disons que j'ai l'impression que le sujet concernant
"la sélection sur panel" est un projet étudiant, donné
ou par une université ou une école

Aucun doute :)
D'autant plus qu'on l'a vu apparaître plusieurs fois quasi simultanément sur le forum :)

Quote:
Peut être restrictions a l'utilisation de certaines classes..

Dans le cas présent ça paraît improbable. Mais si c'est le cas, alors il faut le dire tout simplement.

Quote:
Enfin je dis cela parceque étant moi même étudiant,j'ai
déjà été confronté à cela:)

Je n'ai pas appris à l'école, mais avec tous les problèmes d'étudiants que j'ai vu défiler sur ce forum, je suis bien convaincu que c'est un problème récurrent.

Quote:
j'avoue être favorable
à java pour une certaine simplicité d'utilisation,

Tu me fais penser à une phrase que James Kanze, un guru C++, qui écrit volontiers fr.comp.lang.c++ que
"Java est simple pour les cas simples"
:)
Mais dès qu'il s'agit de faire de l'informatique ça ne va pas ;)

Quote:
je ne pense
pas que ca soit par critère "esthétique" qu'ils l'ont choisi

Pour choisir faut déjà savoir qu'autre chose existe. Et franchement parfois je me demande....
Mais là bien sûr ce n'est pas de la faute des étudiants :(
Le problème c'est que java c'est un langage de profs. Je veux dire Java est facile à enseigner. Alors....
perluce

Merci, en dérivant de JDialog, j'ai pu résoudre mon problème. J'arrive à récupérer les différents choix.

Mais, je ne sais pas trop comment faire après selon les différents choix pour dessiner parce qu'il y a plusieurs possibilités et écrire tout cela sur un mouseClicked me semble assez encombrant pour le code.

Parce que selon mes différents choix, il faut par exemple que je permette à l'utilisateur de sélectionner une ligne puis un point et ensuite me positionner par rapport au point sélectionné sur une ligne qui vérifiera l'équation de droite de la nouvelle droite puis permettre à l'utilisateur de cliquer sur un deuxième point et d'avoir ainsi sa parallèle. J'aimerais juste avoir des idées pour gérer les différents choix dans mon panel en fait, à quel niveau du code de mon panel gérer mes choix.

Une des idées que j'ai eu est de définir dans ma JDialog, un numéro précis de cas selon les options cochées et dans le panel , je vais vérifier dans quel cas je me trouve pour dessiner. Mais après cela, je ne sais pas quoi faire exactement por que l'utilisateur puisse effectivement dessiner.

j'espère que mes explications ne sont pas trop confuses.

Merci d'avance

perluce

fredericmazue

Quote:
Merci, en dérivant de JDialog, j'ai pu résoudre mon problème.

J'en suis très heureux.

Quote:
j'espère que mes explications ne sont pas trop confuses.

Sincèrement je n'ai rien compris.
Parce que ça manque de code dans ta question.
D'autre part, je ne vais pas t'aider sur ce coup car je suis en vacances. :)
Je suis seulement de passage rapide là.
Mais si tu postes du code, je suis sûr que quelqu'un d'autre t'aidera.
Niroken peut être qui adore ce genre de question. ;)
Niroken

Hmmm il se trouve que Niroken non plus
il n'a pas tout compris :) .

A la limite si tu veux que je puisse t'aider de
manière plus efficace, on peut procéder pas
à pas en disant ce que tu veux faire.

Je ne sais pas moi, par exemple pour le sujet
des points, lignes, cercles etc...

J'aurais bien imaginé une petite interface à la
"paint" avec à gauche en haut les boutons
correspondants aux figures à dessiner, sur le
panel central, les dessins correspondants, et
en dessous des boutons de choix de figure
on peut par exemple une petite zone informa
tive qui renseigne l'utilisateur sur le type de figure
qu'il vient de sélectionner, dimensions etc..

C'est un point de départ parmi d'autres, dis moi
ce que tu en penses.

Bonne chance

perluce

Salut Niroken,

c'est un peu ce que je veux faire mais n'étant pas expert en java, je n'ai pour l'instant qu'une frame avec un panel de boutons pour les formes à dessiner (point, polygone, ligne, sélection, suppression, parallèle, perpendiculaire,rotation). Et un panel central sur lequel, je dessine. Tout ce qui concerne mes cinq premiers boutons, j'arrive à le faire. Mais pour la parallèle et la perpendiculaire, étant donné que je dois les faire d'après ce que j'ai saisi dans des boîtes de dialogues, je n'y arrive pas.

En gros mon appli doit permettre à l'utilisateur de dessiner, sélectionner et supprimer des objets (point, ligne et polygone). Ensuite, il doit pouvoir créer une parallèle ou une perpendiculaire d'après les différents critères sélectionnés dans une boîte de dialogue. Et pour terminer, il doit pouvoir après avoir sélectionner un objet, faire une rotation de cet objet en définissant l'angle de rotation.

J'espère que c'est un peu plus clair.

Niroken

Bien c'est plus clair :D

Maintenant en ce qui concerne les boites de dialogues,
je ferais ceci :

->Construction des cirtères qui permettent de construire
une parallèle ou une perpendiculaire.
En gros quand tu as rempli tes critères tu as une nouvelle
instance de ta classe droite :) -> ca veut dire que tu viens
de créer une droite.
->Dans ta boite de dialogue tu passes la fenêtre d'origine
en paramètre: comme ca une fois que ta boite de dialogue
a créer une droite, tu nas plus qu a ajouter la droite à
ta fenetre d'origine, ensuite un petit repaint un petit dispose
sur ta oite de dialog et le tour est joué.

Je vais essayer de te pondre un code qui fait ca:)

Mais en atteandant avec ces explications, tu devrais pouvoir
avancer.

Bonne chance.

perluce

Merci beaucoup pour l'aide niroken.

je vais essayer d'apporter quelques précisions. En fait les critères dans la boîte de dialogue sont ceux à prendre en compte pour dessiner. Donc après les avoir saisi, l'utilisateur va pouvoir dessiner sa droite d'après ses choix. La droite n'est pas directement créé depuis la boîte de dialogue. On sélectionne juste les paramètres à prendre en compte pour la création. Et c'est à ce niveau, que je bloque un peu.

Je me demande comment gérer ça dans le code de mon panel principal.

Je disais donc dans le message d'avant que l'idée que j'ai eu était de numéroter les différentes possibilités de dessin d'après les choix. Et selon, chaque cas, dans le mouseClicked, compter le nombre de clics.
Du style, pour une des cas :
-le premier clic permet de sélectionner le segment de référence,
-le deuxième clic, un point de référence. Après la saisie du point de référence, la souris ne se déplacera que sur une droite qui vérifie l'équation de la parallèle à créer.
-au troisième clic, l'utilisateur chosi le début de sa parallèle
-au quatrième clic, le point de fin et la parallèle est créée.

Mais comme j'ai à peu près cinq ou six cas, je me dis que ça fait beaucoup de code à mettre dans mouseClicked, sachant qu'il y en a déjà pour la création, la sélection et la suppression.

jrebillat

Je viens de regarder ce que voua avez écrit.
En fait tu avances bien.

L'idée qui me vient c'est que, dans chaque cas de figure tu as un automate à état, qui avance à chaque clic, jusqu'à ce qu'il ait toutes les informations.
Tu vas donc devoir gérer les différentes possibilités ( et que ce passe-t-il si, au milieu de la sélection d'un segment parralèle, l'utilisateur change d'idée et veut faire autre chose ? Il faut annuler les sélections faites ? ).
Si tu penses que cela fait trop de code dans la méthode mouseClicked, tu peux peut-pêtre te servir de Listeners ?
=> Quand on choisit une option dans la boite de dialogue, on attache un listener au clic souris. Quand l'automate du listener arrive au bout, il crée l'objet graphique et se détache du clic. Cela fait autant de code à écrire, mais dans plusieurs classes, chacune gérant séparement un cas de figure (y compris une pour la sélection, la suppression, etc... ).

perluce

J'ai un petit problème, lorsque je fais déplacer la souris sur la droite qui vérifie l'équation de la parallèle que je veux créer, j'utilise la classe java.awt.Robot et j'arrive bien à faire déplacer la souris. Mais après, je ne peux pas cliquer pour sélectionner mes deux autres points.

Le code pour déplacer ma souris sur la droite

public void mouseMoved(MouseEvent e) {
		
		if(etape==5){
			
		try{
			Robot r= new Robot();
			for (int i = 0; i < 300; i++)
	        {
	           for (int j = 0; j < 300; j++)
	           {
	              if ((j - (a * i) - (c * 20)) < 0.5f && (j - (a * i) - (c * 20)) > -0.5f)
	                r.mouseMove((int)(i+this.getLocationOnScreen().getX()),(int)(j+this.getLocationOnScreen().getY()));
	           }
	        }
			// trouver comment faire pour cliquer sur le point voulu
			 if(SwingUtilities.isRightMouseButton(e))
				{
		      	  r=null;
				}	
		}
		 catch(Exception ex){
			 System.out.println("Exception :"+ex.getMessage());
		 }
	 
		}
	}

Ce que j'aimerais faire dans mouseClicked

   public void mouseClicked(MouseEvent e)

   {
	Graphics g = getGraphics();
if(etape==5){
    	  System.out.println("dans 6ème étape");
//    	 trouver comment faire pour cliquer sur le point voulu	
 if(SwingUtilities.isRightMouseButton(e))
				{
    	  p4 = new Point(e.getX(),e.getY());
    	  g.drawRect(p4.x,p4.y,1,1);
    		}
    		}
}

mais la souris se déplace juste sur la droite et je ne peux rien faire d'autre. Est ce que quelqu'un saurait comment je peux faire pour cliquer afin de créer mon point?