2012-11-26 3 views
0

Ceci est probablement une question simple, je ne suis pas très habitué à la programmation Java. Mais je dois créer un dialogue avec un CheckboxTree (une variante de JTree avec des cases à cocher, voir http://www.javaworld.com/javaworld/jw-09-2007/jw-09-checkboxtree.html)Ajouter JTree (CheckboxTree) à JDialog

S'il vous plaît noter: J'ai créé le JDialog dans l'environnement graphique de NetBeans, il a généré un code pour ajouter des boutons, etc. donc, je dois savoir comment ajouter cet arbre après la création des pièces principales, pour ainsi dire ... Peut-être que le problème, parce que si je fais quelque chose comme ceci:

JPanel panel = new JPanel(); 
    this.setContentPane(panel); 

alors je vois effectivement l'arbre apparaissant dans le dialogue, mais tous les boutons et tous sont partis ...

I ont été en mesure de l'ajouter à un JFrame et un panneau d'options, mais je le veux dans un JDialog personnalisé. Quelqu'un pourrait-il m'expliquer en termes très simples ce que je dois faire?

Voici mes faibles tentatives jusqu'à présent:

Constructor pour le JDialog:

public MetadataUI(java.awt.Frame parent, boolean modal) { 
    super(parent, modal); 
    initComponents(); 

    Container panel = getContentPane(); 
    panel.add(getTree()); 
    panel.repaint(); 
    this.pack(); 
} 
méthode

de getTree qui crée le checkboxtree:

private static CheckboxTree getTree() { 
    DefaultMutableTreeNode root, child; 

    root = new DefaultMutableTreeNode("root"); 

    child = new DefaultMutableTreeNode("Colors"); 
    root.add(child); 
    child.add(new DefaultMutableTreeNode("Cyan")); 
    child.add(new DefaultMutableTreeNode("Magenta")); 
    child.add(new DefaultMutableTreeNode("Yellow")); 
    child.add(new DefaultMutableTreeNode("Black")); 


    CheckboxTree checkboxTree = new CheckboxTree(root); 
    checkboxTree.setVisible(true); 
    return checkboxTree; 
} 

Ce repeindre et tout ce qui est le dernier Je me suis basé sur quelque chose que j'ai trouvé sur Google, mais cela n'a fait aucune différence, alors je suppose que je suis loin.

La manière la plus simple d'ajouter l'arbre et de le rendre visible serait appréciée. Il semble fonctionner exactement comme un JTree en ce qui concerne l'ajout, mais je ne peux pas le faire fonctionner. Donc, même si personne n'a d'expérience avec ce plugin checkboxtree particulier, le même code (le plus simple) pour utiliser un JTree dans un JDialog ferait probablement!

EDIT:

En réponse à Andrew, voici la même chose (ma meilleure tentative) avec un JTree régulier:

private static JTree getTree() { 
    DefaultMutableTreeNode root, child; 

    root = new DefaultMutableTreeNode("root"); 

    child = new DefaultMutableTreeNode("Colors"); 
    root.add(child); 
    child.add(new DefaultMutableTreeNode("Cyan")); 
    child.add(new DefaultMutableTreeNode("Magenta")); 
    child.add(new DefaultMutableTreeNode("Yellow")); 
    child.add(new DefaultMutableTreeNode("Black")); 


    JTree tree = new JTree(root); 
    tree.setVisible(true); 
    return tree; 
} 

EDIT 2:

En réponse à Maxim, je suis confus. Les choses qui vous semblent évidentes sont probablement perdues pour moi. Empruntant quelques trucs de votre code c'est le meilleur que je pouvais venir avec (ne fonctionne pas):

public MetadataUI(java.awt.Frame parent, boolean modal) { 
    super(parent, modal); 
    initComponents(); 


    JScrollPane s = new JScrollPane(); 

    s.getViewport().add(getTree()); 

    getContentPane().add(s, BorderLayout.CENTER); 

    setVisible(true); 
} 
+0

* "le même code (le plus simple) pour utiliser un JTree dans un JDialog ferait probablement!" * Idem que [SSCCE] (http://sscce.org/) de votre meilleur essai. –

+0

@AndrewThompson: Désolé, je ne comprends pas le commentaire ... – Anders

+0

Publier un SSCCE (en utilisant un standard "JTree") de votre meilleure tentative. –

Répondre

1

Si vous en effet créé votre JDialog avec NetBeans GUI (c'est une forme JDialog) et le composant que vous essayez d'intégrer dans ce que vous avez déjà fournit un constructeur sans argument, essayez ce qui suit:

  1. ouvrir votre JDialog existant en mode Conception
  2. dans la vue Navigateur clic droit sur [JDialog] ou quel que soit votre noeud de niveau supérieur (doit être un frère de "Autres composants") et sélectionnez Add From Palette > Beans > Choose Bean
  3. entrez un nom complet pour la classe qui représente votre composant JTree (ex. com.example.jtree.SomeJTreeComponent) et confirmez.Si le composant est vraiment un JTree, il sera probablement ajouté sans aucun problème.
  4. (facultatif) À ce stade, l'arborescence peut être incluse ou non dans un JScrollPane. Si ce n'est pas le cas, vous pouvez le faire manuellement en répétant les parties de l'étape 2. sur votre composant nouvellement ajouté et en choisissant Enclose in cette fois-ci.

Vous aurez besoin de programmer d'autres choses à la main. Je vous suggère de lire un JTree Tutorial ou de vous référer à la documentation de votre composant tiers pour vous aider à le faire.

Vous pouvez également en savoir plus sur le tool que vous utilisez pour créer votre interface graphique.

+0

Merci beaucoup! C'est ce que j'ai fait! :-) – Anders