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

Composants Java Discussion :

Composant personnalisé (?)


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 74
    Par défaut Composant personnalisé (?)
    Bonjour,
    Je ne sais pas si cette question a déjà été traitée, mais je ne sais pas comment l'exprimer donc ma recherche sur internet est difficile et n'a pas aboutie pour l'instant.
    Voici ce que j'aimerais : à partir d'une image (gif ou png) avec fond transparent, représentant par exemple un disque, je voudrais créer un composant (component) qui puisse être abonné à des évènements (donc pas un graphics...), et qui ne soit "défini" que sur la partie opaque du disque.
    En d'autres termes, je voudrais une sorte de JLabel fait à partir d'une image avec fond transparent qui ne réponde aux évènements souris que lorsque celle-ci est sur la partie opaque (le disque en question), et non sur le carré qui définit l'image entière... (Si ça n'est pas assez clair, je détaillerai ).

    Bien sûr, ça m'a l'air faisable en héritant de JLabel et en faisant du paintComponent dessus qui va intercepter les évènements souris sur la surface rectangulaire et ne traiter que ceux qui sont dans le disque plein... Ma question c'est : est-ce que c'est possible de faire plus court en utilisant quelque chose qui est déjà prévu par l'API ? Et éventuellement : est-ce qu'il y a d'autres moyens de faire qu'un JLabel, plus court, plus simple, plus élégant... ?

    Merci !

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    en général on hérite de JComponent ou JPanel pour les composant custom.
    La gestion des évènement se fait sur va des rectangles formant le composant dans swing. Donc c'est à toi de filtrer dans l'évènement. Ou de surcharger processMouseEvent

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 74
    Par défaut
    Si je comprends bien, ça veut dire que la réponse à ma question est non : il n'y a rien de prévu dans l'API standard pour arriver à mes fins. Il faut que je redéfinisse un JComponent type JPanel ou JLabel et que je code à la main le fait que les pixels transparents ne doivent pas être sensibles au focus souris .

    Dans ce cas, est-ce qu'il y a un moyen simple de reconnaître un pixel "transparent" dans une image gif ou png ? (Je n'ai pas cherché par moi-même, si quelqu'un a des infos ou un lien, merci d'avance ).

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    la logique de controle du composant est séparée de la logique d'affichage du composant. Tout ce que swing sait c'est que votre JPanel/JLabel a une image de AxB en taille. La transparence ne joue que dans paint(), je ne vois pas de méthode dans JComponent qui accepterais de prendre un bitmask pour déterminer quand c'est pour lui et quand c'est pas pour lui.

    Par contre, tu peux aussi surcharger Component.contains(x,y) pour savoir si un point donné fait partie de toi. Toujours à toi de gérer à coté l'image qui sert à déterminer ça

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Un composant personnalisé
    Par mtaveau dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 16/01/2007, 13h00
  2. Un composant personnalisé
    Par mtaveau dans le forum Interfaces Graphiques en Java
    Réponses: 4
    Dernier message: 16/01/2007, 11h50
  3. composent personnalisé et absolutepositionning
    Par mathou810 dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 10/10/2006, 11h06
  4. Réponses: 6
    Dernier message: 02/05/2005, 14h00
  5. [C#] Composant personnalisé et option de DragDrop
    Par debug dans le forum Windows Forms
    Réponses: 4
    Dernier message: 20/04/2005, 14h54

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