swing:tree

This is an old revision of the document!


A PCRE internal error occured. This might be caused by a faulty plugin

====== Δένδρα (Trees) ====== Μπορείτε να δημιουργήσετε μία δενδρική δομή απεικόνισης των δεδομένων σας με χρήση της κλάσης [[http://docs.oracle.com/javase/7/docs/api/javax/swing/JTree.html|JTree]]. Ένα παράδειγμα δενδρικής δομής δίνεται στο παρακάτω σχήμα. {{ :swing:jtree-01.png |}} Όπως φαίνεται στο παραπάνω σχήμα ένα Component τύπου //JTree// απεικονίζει τα δεδομένα του κατακόρυφα ξεκινώντας από ένα κόμβο που ονομάζεται ρίζα του δένδρου και κάθε γραμμή του δένδρου περιέχει μόνο ένα κόμβο. Ένας κόμβος μπορεί να έχει ένα ή περισσότερα παιδιά (//branch node//) ή όχι (//leaf node//). Ένας κόμβος μπορεί να προσδιοριστεί μέσα από το [[http://docs.oracle.com/javase/7/docs/api/javax/swing/tree/TreePath.html|TreePath]] το οποίο προσδιορίζει τη σειρά τον κόμβων από την ρίζα και έως τον συγκεκριμένο κόμβο. Μπορείτε να δείτε το [[swing:jtree_demo_01|παράδειγμα δημιουργίας και διαχείρισης ενός JTree]] από το site της Oracle. Παρακάτω θα αναλύσουμε τα διάφορα στάδια του προγράμματος. ===== Δημιουργία του δένδρου ===== Κάθε δένδρο είναι ένα αντικείμενο της κλάσης [[http://docs.oracle.com/javase/7/docs/api/javax/swing/JTree.html|JTree]]. Επίσης ένα δένδρο περιέχει τον κόμβο που αντιστοιχεί στην ρίζα του δένδρου, αλλά και όλους τους άλλους κόμβους που συναποτελούν το δένδρο και διαμορφώνουν την τελική δενδρική δομή. Κάθε κόμβος του δένδρου θα πρέπει να υλοποιεί το interface [[http://docs.oracle.com/javase/7/docs/api/javax/swing/tree/MutableTreeNode.html|MutableTreeNode]]. Οι μέθοδοι του συγκεκριμένου interface δίνονται παρακάτω: <code java> void insert(MutableTreeNode child, int index) //Adds child to the receiver at index. void remove(int index) //Removes the child at index from the receiver. void remove(MutableTreeNode node) //Removes node from the receiver. void removeFromParent() //Removes the receiver from its parent. void setParent(MutableTreeNode newParent) //Sets the parent of the receiver to newParent. void setUserObject(Object object) Resets the user object of the receiver to object. </code> Από τις παραπάνω μεθόδους είναι προφανές ότι σε ένα κόμβο μπορείτε να προσθέσετε άλλους κόμβους ή να αφαιρέσετε κόμβους ή να μετακινήσετε κόμβους. Ένας απλός τρόπος ώστε οι κόβμοι σας να υλοποιούν το συγκεκριμένο interface είναι να ανήκουν στην κλάση [[http://docs.oracle.com/javase/7/docs/api/javax/swing/tree/DefaultMutableTreeNode.html|DefaultMutableTreeNode]] που υλοποιεί το συγκεκριμένο interface. Παρακάτω δίνεται ο κώδικας που δημιουργεί το δένδρο. <code java> DefaultMutableTreeNode top = new DefaultMutableTreeNode("The Java Series"); createNodes(top); //Create a tree that allows one selection at a time. tree = new JTree(top); tree.setEditable(true); tree.getSelectionModel().setSelectionMode (TreeSelectionModel.SINGLE_TREE_SELECTION); </code> Ο παραπάνω κώδικας δημιουργεί το στοιχείο της ρίζας με τον όνομα //top// και με βάση αυτό δημιουργεί και τα υπόλοιπα αντικείμενα μέσω της μεθόδου ''void createNodes(DefaultMutableTreeNode top)''. Στην συνέχεια, δημιουργεί το δένδρο στο οποίο ορίζει ως ρίζα το στοχείο //top//. Επίσης, ορίζει ότι το δένδρο μπορεί να μεταβληθεί από τον χρήστη και ορίζει ότι μόνο ένας κόμβος του δένδρου μπορεί να επιλεγεί από τον χρήστη κάθε φορά. <code java> tree.setEditable(true); tree.getSelectionModel().setSelectionMode (TreeSelectionModel.SINGLE_TREE_SELECTION); </code> Παρακάτω δίνεται ένα τμήμα της μεθόδου //createNodes//.

swing/tree.1431884282.txt.gz · Last modified: 2016/02/26 11:15 (external edit)