2010-10-29 23 views
7

Je souhaite utiliser un arbre dans mon application Scala Swing, mais le composant n'est pas disponible dans l'API. Un emballage de JTree existe-t-il?Arbre dans le swing scala

Si non, avez-vous des conseils pour le fabriquer?

Merci

Répondre

9

Même si vous pouvez utiliser directement Java DTree dans votre programme scala, comme illustré par this thread, il y a un débat sur l'inclusion d'une enveloppe Scala d'un JTree.

Les usages communs suivants sont fastidieux, bavard, non SÛR type et/ou exiger l'utilisation de nulle dangereuse:

  • Création d'un modèle d'arbre personnalisé, soutenu par vos propres objets utilisateur - la Scala façon Swing serait d'avoir une norme typesafe Map derrière elle
  • événements - il y a des tas d'événements créés par les arbres - TreeWillExpandListeners, TreeSelection, etc - Utilisation du réacteur/Publisher modèle PartialFunction rendrait ce code beaucoup plus lisible et concis.
  • Composants modifiables - Ceci est fait avec des valeurs implicites ailleurs dans scala.swing, et devrait être ici aussi.
  • Renderers personnalisés - Je ne me souviens pas de la manière dont Scala gère ces problèmes, mais c'est toujours très compliqué dans Java Swing.

La ligne de fond est, JTrees sont une douleur massive à utiliser en Java, sans raison particulièrement bonne. Un wrapper Scala serait une aubaine pour les utilisateurs de Scala Swing.

A design is in progress, et un JTree wrapper proposal is available in this GitHub repo, par kenbot (Ken Scambler).