Inséré un point par rapport aux pixels d'une image

pledger33 Messages postés 11 Date d'inscription jeudi 24 mars 2011 Statut Membre Dernière intervention 21 mars 2012 - 15 mars 2012 à 10:46
pledger33 Messages postés 11 Date d'inscription jeudi 24 mars 2011 Statut Membre Dernière intervention 21 mars 2012 - 15 mars 2012 à 14:15
Bonjour le forum

Je fait actuellement une appli qui perme d'enregistrer des points sur une carte.

Je souhaiterai pouvoir enregistrer un point "ma maison" par exemple par rapport au pixels se l'image de ma carte , car je pense que même si l'on bouge l'image le pixel ne bougera pas ( je me trompe surement et si vous avez une meilleure idée je suis preneur )

Seulement je ne sais pas comment faire pour que au clique de la souris enregistrer le point afin de pouvoir le retrouver au lancement de l'appli. Pour l'instant je ne me concentre pas sur l'enregistrement dans la BDD je souhaiterai juste que lorsque je clique sur l'image les coordonnées du point s'affichent dans la console.

Je vous remercie d'avance =)

14 réponses

cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
15 mars 2012 à 10:58
Bonjour,

Je ne comprend pas vraiment ton problème, tu utilises une image ? Dans ce cas, il te suffit de récupérer les coordonnées du point qui a été cliqué et de le mettre dans ta base de données.

Si l'image n'est pas entièrement visible à l'écran tu adaptes les coordonnées par rapport à la position du point haut gauche de la carte et le tour est joué.
0
pledger33 Messages postés 11 Date d'inscription jeudi 24 mars 2011 Statut Membre Dernière intervention 21 mars 2012
15 mars 2012 à 11:01
Le soucis c'est que j'arrive pas à récupéré récupérer les coordonnées du point qui a été cliqué.

Je suis complètement perdu
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
15 mars 2012 à 11:21
Tu as ajouté un MouseListener non ?

Dans ce cas, dans la méthode mouseClicked(MouseEvent e), il te suffit d'appeler e.getPoint() pour récupérer les coordonnées du point cliqué.
0
pledger33 Messages postés 11 Date d'inscription jeudi 24 mars 2011 Statut Membre Dernière intervention 21 mars 2012
15 mars 2012 à 11:27
Merci je regarde sa :)


Voici mon code actuel sans appeler le e.getPoint()

public class Panneau extends JPanel implements MouseListener{
 
        public void paintComponent(Graphics g){
                                
               try {
                   Image img = ImageIO.read(new File("image.jpg"));
                   g.drawImage(img, 0, 0, this);
                   
           } catch (IOException e) {
                  
                   e.printStackTrace();
           }
               
               System.out.println("Je suis exécutée ! ! !");
               
        }

@Override
public void mouseClicked(MouseEvent arg0) {

}



@Override
public void mouseEntered(MouseEvent arg0) {
// TODO Auto-generated method stub

}

@Override
public void mouseExited(MouseEvent arg0) {
// TODO Auto-generated method stub

}

@Override
public void mousePressed(MouseEvent arg0) {
// TODO Auto-generated method stub

}

@Override
public void mouseReleased(MouseEvent arg0) {
// TODO Auto-generated method stub

}               
}


Je regarde le pour faire le e.getPoint()
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
15 mars 2012 à 11:42
Non, ca ne marchera pas, tu n'as pas ajouté le listener sur le panneau.

De plus, ce n'est pas terrible de charger l'image dans la méthode paintComponent, tu perd du temps.
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
15 mars 2012 à 11:42
public class Panneau extends JPanel implements MouseListener{

       private Image image;

       public Panneau(){
              addMouseListener(this);
              try {
                   Image image = ImageIO.read(new File("image.jpg"));
              } catch (IOException e) {
                   e.printStackTrace();
              }
       }
 
       public void paintComponent(Graphics g){              
              g.drawImage(image, 0, 0, this);
              System.out.println("Je suis exécutée ! ! !");
       }

@Override
public void mouseClicked(MouseEvent arg0) {

}



@Override
public void mouseEntered(MouseEvent arg0) {
// TODO Auto-generated method stub		
}

@Override
public void mouseExited(MouseEvent arg0) {
// TODO Auto-generated method stub		
}

@Override
public void mousePressed(MouseEvent arg0) {
// TODO Auto-generated method stub		
}

@Override
public void mouseReleased(MouseEvent arg0) {
System.out.println(arg0.getPoint().getX());	
}               
}
0
pledger33 Messages postés 11 Date d'inscription jeudi 24 mars 2011 Statut Membre Dernière intervention 21 mars 2012
15 mars 2012 à 11:54
Après la lecture de ton code je comprend mieux merci =)

J'ai remplacé ton code par le mien mais lorsque je l’exécute il ne prend pas l'image en compte et ni le arg0 du dernier system.out :/
0
pledger33 Messages postés 11 Date d'inscription jeudi 24 mars 2011 Statut Membre Dernière intervention 21 mars 2012
15 mars 2012 à 13:19
J'a résolut le tout j'avais zappé le arg0 à remplacer par e =)
Maintenant je vais essayer de sauvegarder le point et y coller une image par dessus =)
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
15 mars 2012 à 13:35
Ok, en lisant ton premier message j'ai eu peur, je ne voyais vraiment pas l'erreur.
0
pledger33 Messages postés 11 Date d'inscription jeudi 24 mars 2011 Statut Membre Dernière intervention 21 mars 2012
15 mars 2012 à 13:41
La j'ai ma connection à ma BDD dans mon Package dataAccesss :

Je ne sais pas vraiment comment m'y prendre pour récupérer le résultat du mouseReleasedpour l'envoyer dans ma table.

Voici mon code de connection :
package dataAccesss;

import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;

public class ConnectionBDD {

private String dbURL = "//localhost:3306/zqdfev";
private String user = "root";
private String password = "";
private java.sql.Connection dbConnect = null;
private java.sql.Statement dbStatement = null;

public Boolean connect() {
try {
Class.forName("com.mysql.jdbc.Driver");
dbConnect = DriverManager.getConnection("jdbc:mysql:" + dbURL, user, password);
dbStatement = dbConnect.createStatement();
return true;
} catch (SQLException ex) {
Logger.getLogger(ConnectionBDD.class.getName()).log(Level.SEVERE, null, ex);
} catch (ClassNotFoundException ex) {
Logger.getLogger(ConnectionBDD.class.getName()).log(Level.SEVERE, null, ex);
}

return false;
}

public ResultSet exec(final String sql) {
try {
ResultSet rs = dbStatement.executeQuery(sql);
return rs;
} catch (SQLException ex) {
Logger.getLogger(ConnectionBDD.class.getName()).log(Level.SEVERE, null, ex);
}
return null;
}

public void close() {
try {
dbStatement.close();
dbConnect.close();
dbConnect.close();
} catch (SQLException ex) {
Logger.getLogger(ConnectionBDD.class.getName()).log(Level.SEVERE, null, ex);
}
}

}

0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
15 mars 2012 à 13:46
Déjà, ca, il faut l'enlever : catch (ClassNotFoundException ex) {

Ta méthode exec ne te permetta pas d'enregistrer quelque chose dans la base de données, il faut que tu utilises la méthode exécuteUpdate :

connexion.executeUpdate("INSERT INTO Points VALUES "+point.getX()+", "+point.getY()+";");
0
pledger33 Messages postés 11 Date d'inscription jeudi 24 mars 2011 Statut Membre Dernière intervention 21 mars 2012
15 mars 2012 à 13:52
Pour commencer je dois totalement supprimer mon
 catch (ClassNotFoundException ex) {
Logger.getLogger(ConnectionBDD.class.getName()).log(Level.SEVERE, null, ex);
} 


?

et je met connexion.executeUpdate("INSERT INTO Points VALUES "+point.getX()+", "+point.getY()+";");

dans mon reslutSet ?
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
15 mars 2012 à 14:04
Pour la première question oui.

Pour la deuxième non : je te donne le modèle, à toi d'adapter. Et en plus, pour un executeUpdate, il n'y a pas de resultset : tu ne reçois pas de données en retour...
0
pledger33 Messages postés 11 Date d'inscription jeudi 24 mars 2011 Statut Membre Dernière intervention 21 mars 2012
15 mars 2012 à 14:15
Ok merci beaucoup je me penche la dessus =)
0
Rejoignez-nous