-
Analyser une image
Bonjour,
J'ai conçu un programme permettant d'administrer des bases de données. Pour choisir la table à administrer j'ai procédé de la manière suivante :
j'ai peins le fond de mon panel avec une image du MCD correspondant et j'ai superposé des JButton transparent au dessus de chaque table.
Ainsi quand on clic sur l'image d'une table je peux déclencher une action grâce au bouton qui la superpose et qui est invisible.
Je souhaiterais maintenant améliorer mon programme pour faire en sorte qu'a chaque fois qu'un rectangle soit trouver sur mon image (chaque rectangle correspondant a une table), un JButton lui soit automatiquement superposé et récupérer le premier mot contenu a l’intérieur (nom de la table).
Pourriez vous m'aiguiller sur les outils (api) ou méthode à suivre pour obtenir ce résultat. Pensez vous qu'un tel traitement soit complexe a mettre en place ?
-
On est donc dans une application graphique ? Qui dois probablement utilisé les composant Swing.
Si on pars sur cette hypothèse, je pense qu'il y a moyen de faire plus simple.
Pou commencer, tu peux très bien ajouter ton Event sur l'image ce qui t'évite la création inutile du bouton. Ou sur ton panel.
Pour ton IHM, tu pars du mauvais pieds.
Il te sera bien plus simple d'avoir au niveau de l'application la liste des tables. (requête SQL : show tables ?)
Et de crée pour chaque table, ton bouton/image/Event.
Si tu utilise la même image au nom près pour très boutons. Je te conseil de crée une Classe BoutonImageTable qui prend en paramètre un string (nom de table). Que tu pourra place proprement dans ton panel et lié à un Event générique. Vue que tu pourra récupérer le nom de ta table via la classe BoutonImageTable. Qui est récupérable depuis l'event (getComponent())
Cordialement,
Patrick Kolodziejczyk.
PS: Tu ne veux pas faire de l'analyse d'image pour faire une IHM. Bien trop compliqué !
-
Merci pour ta réponse. Oui, il s'agit bien d'une interface graphique en Swing.
Sur mon image il y a environ 10 rectangles, et au clic de l'un d'entre eux une action particulière doit être déclenchée.
Je ne passe donc pas que je puisse ajouter plusieurs event a des localisations différentes sur une même image. peux on créer plusieurs évent suivant la position du clique souris sans JButton?
Pour ta deuxième proposition je l'avais déjà fait, je liste toutes les tables sous forme de JButton. Mais je trouve cette solution moins jolie esthétiquement que de cliquer directement sur ce qu'on veut via une image représentant le contexte global.
-
Si tu ajoute un EventListener sur ton panel, tu peux très facilement avoir les coordonnées de la souris par rapport à celui-ci.
De la tu peux faire une grille virtuelle se basant sur (x,y) :
Code:
int index = x%200+(y%100)*3;
En supposant que tu as 3 boutons espacé de 200px sur des lignes de 100px;
Il t'es aussi possible d'aller regarder ton image et de valider si la zone cliqué est transparente ou non.(Si le clique est sur le bouton ou à coté.)
Note : Tu peux très bien avoir ton image de font et des label cliquable.