web-dev-qa-db-fra.com

Comment créer un composant Swing personnalisé

J'ai toujours voulu créer des composants personnalisés en Java ou personnaliser ceux existants, mais mes recherches n'ont jamais abouti à quoi que ce soit d'utile. J'ai donc décidé de demander à la communauté StackOverflow:

Où puis-je trouver des informations sur la personnalisation de Java Composants GUI en général?

Et quand je parle de personnalisation, je ne parle pas de changer les couleurs, les polices, etc. Je veux dire vraiment les personnaliser. Voici deux exemples de composants de maquette:

Custom Components Mockup

Notes
J'ai commencé cette question principalement pour trouver comment créer les deux composants personnalisés ci-dessus. Mais j'ai réalisé qu'il n'y avait pas de question générale sur le piratage des composants de balançoire. J'ai donc pensé qu'il serait préférable d'avoir une liste de ressources.

Au cas où vous vous demandez comment fonctionnent les deux composants de la maquette, la voici:

Un JScrollPane personnalisé qui a deux barres de défilement pour chaque orientation. Chaque barre de défilement peut agir différemment. Par exemple, les externes défilent normalement et les internes déplacent la vue d'une manière plus Picasa -. J'ai en fait obtenu une réponse (!) De travail de Google Groupes ici , mais c'était juste du code.

Le second est un JComboBox personnalisé qui, lorsque la liste contextuelle est développée, a un JComponent à la fin. Cela peut être n'importe quoi, d'un simple JLabel avec une icône, à un JButton qui manipule la liste d'une manière.

Mais cette question ne concerne pas ces composants spécifiques. Il s'agit de trouver des ressources (sites Web, livres, articles, etc.) pour apprendre à les créer .

37
pek

Cet article, Comment écrire un composant Swing personnalisé devrait être vraiment utile. Il couvre la réplication d'un contrôle de curseur Windows qui comporte à la fois des étapes discrètes et une plage continue.

18
John K

Le JDK est open source. Pour comprendre comment vous écrivez un composant Swing, il n'y a pas de meilleur endroit où chercher que la source des composants Swing. En général, lorsque vous créez des composants personnalisés, vous êtes intéressé par un ou plusieurs des éléments suivants: {sémantique d'interaction, représentation visuelle, structure de composition}

Commencez avec les cas les plus simples:

Composants passifs: JLabel
Composants interactifs: JButton

JLabel présentera l'extension barebones de JComponent pour le dessin personnalisé d'un composant; dans ce cas, il dessine la valeur de chaîne "texte" comme sa représentation.

JButton présentera l'extension barebones pour l'interaction utilisateur en plus de dessiner le composant.

15
alphazero

Filthy Rich Clients est un excellent livre très lisible sur ce sujet. Il s'agit davantage d'améliorer l'apparence et la convivialité des composants Swing que d'en créer de entièrement nouveaux, mais cela entre dans les tripes de Swing et fournit de nombreux exemples pratiques.

10
Amanda S

Ceci est une question assez ouverte, la réponse simple et courte est que vous sous-classe JComponent ou l'un de ses descendants et ajoutez la fonctionnalité que vous exiger. Évidemment, selon ce que vous voulez faire, cela peut varier en difficulté. Pour commencer, je vous recommande de lire le tutoriel de Sun sur l'utilisation des composants Swing où il y a des exemples sur la façon d'utiliser les volets de défilement et menus contextuels . Une fois que vous les aurez lus et expérimentés, vous aurez peut-être des questions plus spécifiques auxquelles les gens pourront répondre plus facilement.

Si les deux composants de votre maquette sont tout ce que vous souhaitez implémenter, nous donner une meilleure idée de la façon dont vous voulez qu'ils fonctionnent donnera de meilleures réponses.

4
ninesided

Personnellement, je trouve les réponses ci-dessus trop générales ou vagues. De plus, comme quelqu'un va inévitablement tomber sur ce fil comme je l'ai fait, je ferais aussi bien de fournir ce que j'ai trouvé:

J'espère que cela t'aides...

2
kralyk

Lire Swing Hacks: Astuces et outils pour construire des interfaces graphiques tueuses (Marinacci, Adamson) . IMHO un livre essentiel pour travailler efficacement avec swing en général.

1
Daniel Hiller