Question

J'ai toujours voulu créer des composants personnalisés en Java ou personnaliser ceux qui existent déjà, mais mes recherches n'ont jamais abouti à des résultats utiles. J'ai donc décidé de demander à la communauté StackOverflow:

Où puis-je trouver des informations sur la personnalisation des composants de l'interface graphique Java en général?

Et lorsque je parle de personnalisation, je ne parle pas de couleurs changeantes, de polices, etc., mais de vraiment les personnaliser. Voici deux exemples de composants de maquette:

Maquette de composants personnalisés

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

Si vous vous demandez comment fonctionnent les deux composants de la maquette, la voici:

JScrollPane personnalisé comportant deux barres de défilement pour chaque orientation. Chaque barre de défilement peut agir différemment. Par exemple, les éléments extérieurs défilent normalement et les éléments intérieurs déplacent la vue de manière plus Picasa . J'ai en fait obtenu une réponse (!) Active de groupes Google ici , mais ce n'était que du code.

Le second est un JComboBox personnalisé qui, lorsque la liste déroulante est développée, comporte 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 faut trouver des ressources (sites Web, livres, articles, etc.) pour apprendre à les créer .

Était-ce utile?

La solution

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

Autres conseils

Le JDK est open source. Pour comprendre comment vous écrivez un composant Swing, il n'y a pas de meilleur endroit pour 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 compositionnelle}

Commencez par les cas les plus simples:

Composants passifs: JLabel
Composants interactifs: JButton

JLabel va montrer l'extension barebones de JComponent pour le dessin personnalisé d'un composant; dans ce cas, il dessine la valeur de la chaîne 'text' comme représentation.

JButton montrera l'extension barebones pour l'interaction utilisateur en plus de dessiner le composant.

Le

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

C'est une question assez ouverte, la réponse simple est que vous sous-classez JComponent ou l'un de ses descendants et ajoutez les fonctionnalités dont vous avez besoin. Évidemment, en fonction de ce que vous voulez faire, la difficulté peut varier. Pour commencer, je vous recommande de lire le tutoriel de Sun sur l'utilisation des composants Swing où il y a des exemples d'utilisation de volets de défilement et menus contextuels . Une fois que vous avez lu et expérimenté ces questions, vous pouvez poser des questions plus spécifiques auxquelles les personnes interrogées auront plus de facilité à répondre.

Si vous souhaitez implémenter les deux composants de votre maquette, donnez-nous une meilleure idée de la façon dont vous souhaitez qu'ils fonctionnent, vous obtiendrez de meilleures réponses.

Lire Swing Hacks: Tips & amp; Outils pour créer des interfaces graphiques Killer Killer (Marinacci, Adamson) . IMHO un livre essentiel pour travailler efficacement avec le swing en général.

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 pourrais aussi bien fournir ce que j'ai trouvé:

J'espère que cela vous aidera ...

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top