IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AWT/Swing Java Discussion :

Manipulation de contrôles à la souris sur 2 dimensions : faisable ou pas ?


Sujet :

AWT/Swing Java

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2012
    Messages : 5
    Points : 1
    Points
    1
    Par défaut Manipulation de contrôles à la souris sur 2 dimensions : faisable ou pas ?
    Bonjour,

    Je souhaite savoir s'il serait possible ou non de déplacer à la souris (click'n'drop ou drag'n'drop, peu m'importe) des contrôles dans un conteneur (quitte à créer un layout qui le permette, mais il me semble qu'en utilisant un layout "null" c'est faisable) . Il s'agirait de contrôles personnalisés qui ne réagiraient pas au clic normal (sauf si on part sur du click'n'drop, mais ce que je veux dire, c'est qu'il ne s'agira pas de contrôles style JButton, par exemple)

    Difficulté supplémentaire, les mouvements doivent être contraints : je ne veux pouvoir déplacer un contrôle que sur une seule dimension à la fois (verticale ou horizontale, les deux doivent être possibles, mais pas les deux en même temps, la distinction se faisant par exemple avec clic pour une dimension, et shift+clic pour l'autre), et bien sûr sans pouvoir sortir du conteneur. Je n'ai pas forcément besoin d'attraper (grab/trap) la souris, par contre.

    Pensez-vous que cela soit possible ? Si oui, quelle serait la meilleure approche ?

    Bien entendu, je sais que je vais me heurter également au problème de la souris sortant de la fenêtre, ou d'une fenêtre par-dessus l'actuelle, mais disons que tout ça viendra dans un second temps.

    D'avance merci pour vos sages conseils !

  2. #2
    Membre éprouvé Avatar de fraco
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    750
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2006
    Messages : 750
    Points : 934
    Points
    934
    Par défaut
    jInternalFrame ? jDialog ?

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2012
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Bonjour fraco,

    Est-ce là une question sur l'existant ou des propositions de réponse ?

    Si c'est une question, la réponse est "rien pour l'instant". Ceci est une question ouverte pour m'orienter. Le projet n'en est qu'à ses prémisses et aucune orientation définitive n'a encore été prise.

    Si c'est une réponse, elle n'est pas compréhensible par mon petit cerveau.

  4. #4
    Membre éprouvé Avatar de Lady
    Femme Profil pro
    Développeur Java
    Inscrit en
    Mars 2003
    Messages
    678
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2003
    Messages : 678
    Points : 909
    Points
    909
    Par défaut
    Alors:

    1: c'est faisable.

    2: nulllayout possible avec des JPanels comme base graphique de tes composants.
    Sinon un bon vieux Canvas sur lequel tu dessine tout.
    En fait tout dépend déjà de comment tu choisis de gérer tes contrôles: de simple "dessins" ? une extensions de composant existant ? Des conteneurs ?

    3: pour le déplacement en 1 seul dimension c'est comme tu veux c'est toi qui gère le dessin donc même si l'utilisateur déplace sa souris en diagonal tu peux fait bouger ton item "flottant" qu'en vertical ou horizontal. Après le problème peut être au niveau ergonomie... Je te conseil de t'inspirer des logiciels de dessins type photoshop qui ont se type de fonctionnement (ctr + déplacement pour tracer un ligne droite)
    Informaticienne le jour, créatrice de bijoux la nuit (https://www.facebook.com/La-Fée-Chro...07539656306271) et maman à plein temps !

  5. #5
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Tu active le drag and drop sur tes composant et ton conteneur, tu fait les opérations qui vont bien lors des évènement dragmousemoved et drop.

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2012
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    J'avais effectivement pensé à un Canvas, mais je me demande si c'est le plus pratique. En fait, je devrais proablement être plus précis sur mon besoin.

    Réellement, je vais avoir besoin de 2 niveaux de contenance, où chaque niveau va porter des composants déplaçables en son sein. Je vais faire un petit schéma, je pense que ce sera plus simple. (cf pièce jointe)

    Dans le cas que j'ai schématisé, on va admettre que le niveau 0 ne bougera pas (même si en réalité, il pourra probablement). Le niveau 1 sera déplaçable sur les 2 dimensions, et le niveau 2 seulement horizontalement.

    Sachant que, dans l'idéal, le niveau 2 devrait pouvoir "sortir" du niveau 1, mais en restant contraint au niveau 0, auquel cas le niveau 1 sera réadapté pour à nouveau contenir le 2, et de la même manière, le niveau 1 serait déplaçable vers un autre conteneur de niveau 0. Je n'ai pas besoin de gérer les collisions entre les éléments d'un même niveau.

    Du coup, l'idée du drag&drop de tchize_ me plaît relativement (merci !), car je pense que ce sera plus souple. Maintenant, n'ayant jamais fait de drag&drop en Java, je ne sais pas ce qui est possible à ce niveau-là.
    Est-ce qu'on peut détecter précisément (au pixel) la position du drop ? Peut-on avoir un callback durant le drag ? (il faut absolument qu'on voie les éléments durant le déplacement !)

    Je suis désolé de vous embêter avec mes questions, je sais que les réponses existent déjà, seulement une recherche rapide ne m'a pas satisfait, et je n'ai malheureusement pas beaucoup plus de temps à y consacrer pour le moment
    Images attachées Images attachées  

  7. #7
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806

  8. #8
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2012
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Merci. Je regarderai chez moi, parce que le proxy du boulot a décidé que cette page n'était pas pour moi...

    edit: ah non, j'ai dit une connerie... j'ai dû confondre avec un autre onglet. Je jetterai un oeil tout à l'heure.

  9. #9
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2012
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Super, ça a l'air au poil ! Et en plus, tellement simple à coder j'en reviens presque pas. Je vais garder ça précieusement sous le coude pour quand le moment sera venu...

    Merci beaucoup tchize_, ainsi que tous les participants !

    Note perso, pour référence future : GhostDropEvent

Discussions similaires

  1. Action de la souris sur un contrôle
    Par sondo dans le forum Composants VCL
    Réponses: 18
    Dernier message: 12/02/2009, 12h40
  2. Positionner la souris sur un contrôle.
    Par curt dans le forum VBA Access
    Réponses: 3
    Dernier message: 07/09/2008, 20h58
  3. Réponses: 7
    Dernier message: 27/06/2005, 22h05
  4. coordonnées d'un clic souris sur une image
    Par marcuswgs84 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 18/01/2005, 19h08
  5. Changer la couleur du texte lors passage souris sur un TD !
    Par Kokito dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 10/01/2005, 15h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo