This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
|
swing:tree [2015/05/17 19:07] gthanos [Ανταποκρινόμενοι στα events ενός δένδρου] |
swing:tree [2018/04/13 11:01] |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ====== Δένδρα (Trees) ====== | ||
| - | Μπορείτε να δημιουργήσετε μία δενδρική δομή απεικόνισης των δεδομένων σας με χρήση της κλάσης [[http:// | ||
| - | |||
| - | {{ : | ||
| - | |||
| - | Όπως φαίνεται στο παραπάνω σχήμα ένα Component τύπου //JTree// απεικονίζει τα δεδομένα του κατακόρυφα ξεκινώντας από ένα κόμβο που ονομάζεται ρίζα του δένδρου και κάθε γραμμή του δένδρου περιέχει μόνο ένα κόμβο. Ένας κόμβος μπορεί να έχει ένα ή περισσότερα παιδιά (//branch node//) ή όχι (//leaf node//). Ένας κόμβος μπορεί να προσδιοριστεί μέσα από το [[http:// | ||
| - | |||
| - | Μπορείτε να δείτε το [[swing: | ||
| - | |||
| - | ===== Δημιουργία του δένδρου ===== | ||
| - | |||
| - | Κάθε δένδρο είναι ένα αντικείμενο της κλάσης [[http:// | ||
| - | |||
| - | <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. | ||
| - | </ | ||
| - | |||
| - | Από τις παραπάνω μεθόδους είναι προφανές ότι σε ένα κόμβο μπορείτε να προσθέσετε άλλους κόμβους ή να αφαιρέσετε κόμβους ή να μετακινήσετε κόμβους. Ένας απλός τρόπος ώστε οι κόμβοι σας να υλοποιούν το συγκεκριμένο interface είναι να ανήκουν στην κλάση [[http:// | ||
| - | |||
| - | <code java> | ||
| - | DefaultMutableTreeNode top = | ||
| - | new DefaultMutableTreeNode(" | ||
| - | 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); | ||
| - | </ | ||
| - | |||
| - | Ο παραπάνω κώδικας δημιουργεί το στοιχείο της ρίζας με τον όνομα //top// και με βάση αυτό δημιουργεί και τα υπόλοιπα αντικείμενα μέσω της μεθόδου '' | ||
| - | <code java> | ||
| - | tree.setEditable(true); | ||
| - | tree.getSelectionModel().setSelectionMode | ||
| - | (TreeSelectionModel.SINGLE_TREE_SELECTION); | ||
| - | </ | ||
| - | |||
| - | Παρακάτω δίνεται ένα τμήμα της μεθόδου // | ||
| - | <code java> | ||
| - | private void createNodes(DefaultMutableTreeNode top) { | ||
| - | DefaultMutableTreeNode category = null; | ||
| - | DefaultMutableTreeNode book = null; | ||
| - | |||
| - | category = new DefaultMutableTreeNode(" | ||
| - | top.add(category); | ||
| - | |||
| - | //original Tutorial | ||
| - | book = new DefaultMutableTreeNode(new BookInfo | ||
| - | ("The Java Tutorial: A Short Course on the Basics", | ||
| - | " | ||
| - | category.add(book); | ||
| - | |||
| - | //Tutorial Continued | ||
| - | book = new DefaultMutableTreeNode(new BookInfo | ||
| - | ("The Java Tutorial Continued: The Rest of the JDK", | ||
| - | " | ||
| - | category.add(book); | ||
| - | |||
| - | //JFC Swing Tutorial | ||
| - | book = new DefaultMutableTreeNode(new BookInfo | ||
| - | ("The JFC Swing Tutorial: A Guide to Constructing GUIs", | ||
| - | " | ||
| - | category.add(book); | ||
| - | | ||
| - | .... | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | Από τον παρακάτω κατασκευαστή της κλάσης [[http:// | ||
| - | <code java> | ||
| - | public DefaultMutableTreeNode(Object userObject); | ||
| - | </ | ||
| - | Έτσι στη μέθοδο createNodes αποθηκεύονται Strings, αν πρόκειται για κόμβους που αναφέρονται στις κατηγορίες των βιβλίων ή αντικείμενα της κλάσης // | ||
| - | <code java> | ||
| - | public Object getUserObject() | ||
| - | </ | ||
| - | Σε αυτή την περίπτωση θα χρειαστείτε να γνωρίζετε την κλάση του αντικειμένου το οποίο επιστρέφει η παραπάνω μέθοδος και να εφαρμόσετε κατάλληλο typecasting. | ||
| - | |||
| - | ==== Ανταποκρινόμενοι στα events ενός δένδρου ==== | ||
| - | |||
| - | Ένα δένδρο μπορεί να παράγει δύο τύπους //events//: | ||
| - | * **[[http:// | ||
| - | * **[[http:// | ||
| - | |||
| - | === TreeSelectionEvents === | ||
| - | |||
| - | Σε όλα τα events που συνδέονται με ένα αντικείμενο μπορείτε να πάρετε το αντικείμενο το οποίο συνδέεται με το event μέσα από την μέθοδο '' | ||
| - | |||
| - | <code java> | ||
| - | Object | ||
| - | //Returns a copy of the receiver, but with the source being newSource. | ||
| - | |||
| - | TreePath | ||
| - | //Returns the current lead path. | ||
| - | |||
| - | TreePath | ||
| - | //Returns the path that was previously the lead path. | ||
| - | |||
| - | TreePath | ||
| - | //Returns the first path element. | ||
| - | |||
| - | TreePath[] | ||
| - | //Returns the paths that have been added or removed from the selection. | ||
| - | |||
| - | boolean | ||
| - | //Returns whether the path identified by getPath was added to the selection. | ||
| - | |||
| - | boolean | ||
| - | //Returns whether the path at getPaths()[index] was added to the selection. | ||
| - | |||
| - | boolean | ||
| - | //Returns whether the specified path was added to the selection. | ||
| - | </ | ||
| - | |||
| - | === TreeModelEvents === | ||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||